Skip to content

Latest commit

 

History

History
267 lines (240 loc) · 8.11 KB

benchmark_tpcc.md

File metadata and controls

267 lines (240 loc) · 8.11 KB

简介

TPC-C 是一个联机事物处理基准,tpcc-mysql 是 percona 基于 TPC-C 衍生出来的产品,专用于 mysql 基准测试。TPC-C 测试规范中模拟了一个比较复杂并具有代表意义的 OLTP 应用环境:假设有一个大型商品批发商,它拥有若干个分布在不同区域的商品库;每个仓库负责为 10 个销售点供货;每个销售点为 3000 个客户提供服务;每个客户平均一个订单有 10 项产品;由于一个仓库中不可能存储公司所有的货物,有一些请求必须发往其它仓库,因此,数据库在逻辑上是分布的。

该系统需要处理的交易为以下几种:

交易类型 说明
New-Order 客户输入一笔新的订货交易
Payment 更新客户账户余额以反映其支付状况
Delivery 发货(模拟批处理交易)
Order-Status 查询客户最近交易的状态
Stock-Level 查询仓库库存状况,以便能够及时补货

对于前四种类型的交易,要求响应时间在 5 秒以内;对于库存状况查询交易,要求响应时间在 20 秒以内。

测试程序使用 terark/tpcc-mysql,我们在原版 tpcc-mysql 的基础上添加了读取文本文件作为数据源的功能。

测试的数据库有:TerarkSQL (下简称 TerarkDB),官方原版 MySQL(下简称 InnoDB)。MySQL 开启压缩。

测试平台

CPU Intel(R) Xeon(R) CPU E5-2630 v3 @ 2.40GHz x2 (共 16 核 32 线程)
内存 DDR4 16G @ 1866 MHz x 12 (共 192 G
SSD INTEL SSDSC2BP48 0420 IOPS 49000(共 480 G
操作系统 CentOS 7

测试中使用的官方原版 MySQL 版本为 Ver 5.6.35 for linux-glibc2.5 on x86_64。

下文 G, GB 230,而非 109

数据导入

tpcc-mysql 原版只能导入自动生成的数据,这样的数据无法体现压缩算法的优劣,所以我们修改了 tpcc-mysql 源码,以支持读取指定文件中的数据。数据导入后,数据库尺寸大小如下:

数据库尺寸 压缩率 索引+数据大小
InnoDB 66 G 60.8% 或 1.64倍 108.5 G
TerarkDB 39 G 35.9% 或 2.78倍

导入数据所使用的命令如下:

./tpcc_load 127.0.0.1:3346 tpcc_test root '' 1000 data.txt

参数分别代表 hostname:port, database_name, user, password, warehouse, filename。

更改 warehouse 会改变数据库的整体大小。

测试结果

每次测试中 InnoDB 的 innodb_buffer_pool_size 总是设置为可用内存的 70%,TerarkDB 的 softZipWorkingMemLimithardZipWorkingMemLimit 分别设置为可用内存的 1/81/4. 事务隔离级别设置为 Read committed.

所有的测试均使用 32 个线程,每次测试前先 warm up 300 秒,每次测试持续 30 分钟

测试记录了 New-Order、Payment、Delivery、Order-Status、Stock-Level 五种业务的总业务次数,单位为 TTransactions)和每分钟 New-Order 业务次数——TPMC,单位为 TPM(Transactions Per Minute)。

下表同时列出了更通用的 TPS(Transactions Per Second) 指标(直接从上述 TPC-C 指标换算过来)。

内存业务类型30 分钟总计 TPS TPMC
TerarkDBInnoDBTerarkDBInnoDBTerarkDBInnoDB
192G New-Order 1,882,344 625,808 1,046 348 62,741 20,860
Payment 1,882,347 625,506 1,046 348
Order-Status 188,234 62,583 105 35
Delivery 188,233 62,574 105 35
Stock-Level 188,233 62,587 105 35
32G New-Order 1,568,769 472,355 872 262 52,289 15,746
Payment 1,568,773 472,398 872 262
Order-Status 156,878 47,234 87 26
Delivery 156,878 47,238 87 26
Stock-Level 156,877 47,240 87 26
24G New-Order 1,400,550 437,695 778 243 46,683 14,591
Payment 1,400,549 437,740 778 243
Order-Status 140,055 43,775 78 24
Delivery 140,056 43,774 78 24
Stock-Level 140,054 43,775 78 24
8G New-Order 499,297 306,670 277 170 16,643 10,222
Payment 499,307 306,671 277 170
Order-Status 49,930 30,668 28 17
Delivery 49,929 30,665 28 17
Stock-Level 49,936 30,669 28 17

将该表格中的 New-Order TPS 指标做成更直观的图表,如下:


TPCC


附录1:

tpcc-mysql 表结构