今天发现了percona出的Mysql-tpcc,找了半天相关文章只有一篇日文写的比较详细,结合其内容写出该篇文章。还
目前严格按照tpcc定义的规范实现的软件貌似只有DBT-2和mysql-tpcc俩个工具。
所以他们得出的结果值tpmC 相对来说比较准确。tpmC是代表每分钟事务处理的数量。一般仓库设置为40-100个为cpu
bound,400-1000个是为了测试io
bound。40以下无论事务多少,锁竞争情况也不太容易发生。下面的只是测试例子所以用的仓库很少
1 安装
开源项目https://code.launchpad.net/~percona-dev/perconatools/tpcc-mysql
首先获取源代码
bzr branch lp:~percona-dev/perconatools/tpcc-mysql
下载完目录结构如下
-rw-r--r-- 1 root root 749 Mar 1 15:38 README-rw-r--r-- 1 root root 1621 Mar 1 15:38 add_fkey_idx.sql
-rw-r--r-- 1 root root 317 Mar 1 15:38 count.sql
-rw-r--r-- 1 root root 3105 Mar 1 15:38 create_table.sql
-rw-r--r-- 1 root root 763 Mar 1 15:38 drop_cons.sql
-rw-r--r-- 1 root root 477 Mar 1 15:38 load.sh
-rw-r--r-- 1 root root 1130496 Mar 1 15:58 mysql_tpcc_20111216
drwxr-xr-x 2 root root 4096 Mar 1 15:38 schema2
drwxr-xr-x 5 root root 4096 Mar 1 15:38 scripts
drwxr-xr-x 2 root root 4096 Mar 1 15:38 src
tty:[0] jobs:[0] cwd:[~/tpcc-mysql]
然后编译源文件
cd src
make all
会生成
tcp_start,tcp_load 两个命令语句
2 创建数据库以及表结构
mysql>create database tpc1000$mysql tpcc1000 grant all privileges on *.* to 'root'@'127.0.0.1' identified by 'xxx' ;
3 开测
创建仓库
./tpcc_load 127.0.0.1 tpcc1000 root xxx 10密码为xxx,10代表10个warehouse
模拟事务处理过程
./tpcc_start -h 127.0.0.1 -d tpcc1000 -u root -p 'xxx' -w 10 -c 16 -r 60 -l 600 -f mysql_tpcc_20120301
代表连接tpcc1000的库 一共10个warehouse 16个连接数 预热60秒 运行600秒 文件报告名为mysql_tpcc_20120301
***************************************
*** ###easy### TPC-C Load Generator ***
***************************************
option h with value '127.0.0.1'
option d with value 'tpcc1000'
option u with value 'root'
option p with value 'xxxx'
option w with value '10'
option c with value '16'
option r with value '60'
option l with value '600'
option f with value 'mysql_tpcc_20120301'
[server]: 127.0.0.1
[port]: 3306
[DBname]: tpcc1000
[user]: root
[pass]: 123456
[warehouse]: 10
[connection]: 16
[rampup]: 60 (sec.)
[measure]: 600 (sec.)
RAMP-UP TIME.(60 sec.)
MEASURING START.
10, 7229(5858):19.999|436.396, 7229(966):18.751|381.712, 724(119):19.999|44.500, 722(2):19.999|443.010, 726(707):19.999|550.906
20, 1958(1511):19.999|7525.463, 1953(289):19.999|7474.668, 196(26):19.999|33.298, 196(0):19.999|71.953, 194(171):19.999|184.718
30, 6898(5532):19.999|660.876, 6898(1001):18.304|606.792, 690(103):19.999|33.036, 689(1):19.999|86.962,
560, 7034(5641):19.999|81.681, 7028(945):17.035|54.899, 702(79):19.999|33.617, 702(2):19.999|88.075, 706(695):19.999|204.744
.........................
600, 7094(5744):19.999|69.399, 7098(1030):17.688|61.492, 710(93):19.999|41.070, 710(1):19.999|90.311, 710(705):19.999|180.510
STOPPING THREADS................
[0] sc:78226 lt:325612 rt:0 fl:0
[1] sc:345924 lt:57910 rt:0 fl:0
[2] sc:34098 lt:6287 rt:0 fl:0
[3] sc:40267 lt:116 rt:0 fl:0
[4] sc:1102 lt:39283 rt:0 fl:0
in 600 sec.
[0] sc:78226 lt:325612 rt:0 fl:0
[1] sc:345926 lt:57910 rt:0 fl:0
[2] sc:34098 lt:6287 rt:0 fl:0
[3] sc:40267 lt:116 rt:0 fl:0
[4] sc:1102 lt:39283 rt:0 fl:0
(all must be [OK])
[transaction percentage]
Payment: 43.48% (>=43.0%) [OK]
Order-Status: 4.35% (>= 4.0%) [OK]
Delivery: 4.35% (>= 4.0%) [OK]
Stock-Level: 4.35% (>= 4.0%) [OK]
[response time (at least 90% passed)]
New-Order: 19.37% [NG] *
Payment: 85.66% [NG] *
Order-Status: 84.43% [NG] *
Delivery: 99.71% [OK]
Stock-Level: 2.73% [NG] *
40383.801 TpmC
4 相关参数如下
16:03 [root@10.103.48.97]$ ./tpcc_load --help*************************************
*** ###easy### TPC-C Data Loader ***
*************************************
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
16:02 [root@10.103.48.97]$ ./tpcc_start --help
***************************************
*** ###easy### TPC-C Load Generator ***
***************************************
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
connections 是指的并发连接数,一直保持这种数量的连接
warmup_time 预热时间,预热时间足够的话,热数据都会cache到内存
running_time 是指的测试时间,以10秒为间隔输出事务的吞吐量
以10, 7229(5858):19.999|436.396, 7229(966):18.751|381.712, 724(119):19.999|44.500, 722(2):19.999|443.010, 726(707):19.999|550.906为例
7229 代表New-order的事务量,5858代表影响时间没有达到tpcc标准的事务量,19.999代表90%的事务响应时间在该值以下。
之后的代表各种业务的事务处理的吞吐量。