tpcc-mysql是开源的TPC-C测试工具,其完全遵循TPC-C标准.TPC-C是TPC协会制定的,用来测试典型的复杂OLTP(在线事务处理)系统的性能。它是percona基于tpc-c衍生出来的产品,专用于mysql基准测试,其源码放在bazaar。
一、安装
1,安装bzr版本控制工具
yum install bzr
2,下载tpcc源码
bzr branch lp:~percona-dev/perconatools/tpcc-mysql
3,安装
cd tpcc-mysql/src/
make
然后会在“tpcc-mysql”目录生成 tpcc_load tpcc_start两个二进制程序。
注意:这里可能会出现mysql include或者cc 的错误提示
1,如果是mysql include,在profile中添加c_include_path参数,值为mysql的include路径
vim /etc/profile
export C_INCLUDE_PATH=/usr/local/mysql/include
2,如果是cc,则yum安装gcc
yum install gcc
二、测试
1,生成测试数据,导入“tpcc-mysql”目录下的脚本
mysql -u root -p -e 'create database db1' //创建所需的数据库
mysql> mysql -u root -p db1< create_table.sql //导入表结构
mysql> mysql -u root -p db1< add_fkey_idx.sql //创建表索引及FK等
2,创建数据仓库
[root@racdb2 tpcc-mysql]# ./tpcc_load 127.0.0.1 db1 root 123456 10
语法:
usage: tpcc_load [server] [DB] [user] [pass] [warehouse]
OR
tpcc_load [server] [DB] [user] [pass] [warehouse] [part] [min_wh] [max_wh]
* [part]: 1=ITEMS 2=WAREHOUSE 3=CUSTOMER 4=ORDERS
3,开始测试,
./tpcc_start -h 127.0.0.1 -uroot -p123456 -d db1 -w 1 -c 1
语法:
Usage: tpcc_start -h server_host -P port -d database_name -u mysql_user -p mysql_password -w warehouses -c connections -r warmup_time -l running_time -i report_interval -f report_file -t trx_file
常用参数说明:
-w 指定仓库数量,也就是要测试几个数据仓库,比如测试干干创建的100个数据仓库
-c 指定并发连接数
-r 指定开始测试前进行warmup的时间,进行预热后,测试效果更好,更准确
-l 指定测试持续时间
-I 指定生成报告间隔时长
-f 指定生成的报告文件名
例:对100个数据仓库,预热120秒,100个并发连接,运行3600秒, 结果存放在当前文件tpcc100_20130325
./tpcc_start -hlocalhost -d tpcc100 -u root -p 'rootpwd' -w 100 -c 100 -r 120 -l 3600 -f tpcc100_20130325
4,结果分析
测试结果分为三部分:
1,测试属性
(1) 测试对象的属性,如数据库数量,连接数
2,测试过程
10, 988(0):1.301|2.642, 988(0):0.284|0.440, 99(0):0.151|0.218, 98(0):1.526|2.600, 99(0):4.070|4.224
...
(1) 每行数据由时间,订单业务,支付业务,查询业务,发货业务,库存查询业务组成
10:时间戳,每十秒产生一条数据。每行的数据都是计算10秒的结果
988(0):1.301|2.642:表示10秒内完成988笔新订单业务。
988(0):0.284|0.440: 支付业务,
99(0):0.151|0.218,:查询业务,
98(0):1.526|2.600: 发货业务,
99(0):4.070|4.224: 库存查询业务
(2) 每个业务由四种数据的组成,例如:988(0):1.301|2.642
988 : 时间间隔内成功的事务(包括成功和延迟的事务):
(0) :时间间隔内延迟的事务
1.301:时间间隔内前90%记录(实际为99%)的平均响应时间
2.642:时间间隔内最大的响应时间
3,测试结果
[0] sc:1911 lt:0 rt:0 fl:0 //新订单数
[1] sc:1916 lt:0 rt:0 fl:0 //支付业务
[2] sc:192 lt:0 rt:0 fl:0 //查询业务
[3] sc:191 lt:0 rt:0 fl:0 //发货业务
[4] sc:191 lt:0 rt:0 fl:0 //库存查询
...
<Constraint Check> (all must be [OK])
[transaction percentage]
Payment: 43.54% (>=43.0%) [OK] //支付模块占总业务的43.54%
Order-Status: 4.36% (>= 4.0%) [OK] //订单模块占总业务的4.36%
Delivery: 4.34% (>= 4.0%) [OK] //发货模块占总业务的4.34%
Stock-Level: 4.34% (>= 4.0%) [OK] //库存模块占总业务的4.34%
[response time (at least 90% passed)] //是否满足指标
New-Order: 100.00% [OK]
Payment: 100.00% [OK]
Order-Status: 100.00% [OK]
Delivery: 100.00% [OK]
Stock-Level: 100.00% [OK]
//指标如下
New-Order 5ms
Payment 5ms
Order-Status 5ms
Delivery 80ms
Stock-Level 20ms
<TpmC>
5733.000 TpmC //每分钟可完成新订单业务5733笔