TPC-C是专门针对联机交易处理系统(OLTP系统)的规范,一般情况下我们也把这类系统称为业务处理系统。tpcc-mysql是percona基于TPC-C(下面简写成TPCC)衍生出来的产品,专用于MySQL基准测试。其源码放在launchpad上,用bazaar管理。
一、 安装tpcc-mysql1、下载源码包
官方:https://code.launchpad.net/~percona-dev/perconatools/tpcc-mysql
官方github:https://github.com/Percona-Lab/tpcc-mysql
wget https://codeload.github.com/Percona-Lab/tpcc-mysql/zip/master
tpcc-mysql的业务逻辑及其相关的几个表作用如下:
New-Order:新订单,一次完整的订单事务,几乎涉及到全部表\nPayment:支付,主要对应 orders、history 表\nOrder-Status:订单状态,主要对应 orders、order_line 表\nDelivery:发货,主要对应 order_line 表\nStock-Level:库存,主要对应 stock 表\n\n其他相关表:\n客户:主要对应 customer 表\n地区:主要对应 district 表\n商品:主要对应 item 表\n仓库:主要对应 warehouse 表
2、编译安装编译非常简单,只需要一个 make 即可。
unzip tpcc-mysql-master.zip -d /usr/local/\ncd /usr/local/tpcc-mysql-master/src\nmake
如果 make 没有报错,就会在/usr/local/tpcc-mysql-master下生成 tpcc 二进制命令行工具 tpcc_load 、 tpcc_start
3、配置环境变量
echo \"export PATH=$PATH:/usr/local/tpcc-mysql-master\" >> /etc/profile\nsource /etc/profile二、TPCC测试前准备
1、创建测试数据库
set global validate_password_policy=0;\ncreate database tpcc; \ngrant all privileges on tpcc.* to tpcc@'%' identified by 'tpcc@1234';\nflush privileges;
2、初始化测试库环境
#创建表\nmysql -uroot -p -h 172.26.151.78 -D tpcc < /usr/local/tpcc-mysql-master/create_table.sql \n#创建FK和索引\nmysql -uroot -p -h 172.26.151.78 -D tpcc < /usr/local/tpcc-mysql-master/add_fkey_idx.sql
3、加载测试数据
tpcc_load用法如下:
tpcc_load [server] [DB] [user] [pass] [warehouse] \ntpcc_load [server] [DB] [user] [pass] [warehouse] [part] [min_wh] [max_wh]
选项 warehouse 意为指定测试库下的仓库数量。
真实测试场景中,仓库数一般不建议少于100个,视服务器硬件配置而定,如果是配备了SSD或者PCIE SSD这种高IOPS设备的话,建议最少不低于1000个。
执行下面的命令,开始灌入测试数据:
tpcc_load -h 172.26.151.78 -P 3306 -d tpcc -u tpcc -p tpcc@1234 -w 5
在这里,需要注意的是 tpcc 默认会读取 /var/lib/mysql/mysql.sock 这个socket 文件。
ps:tpcc并行加载脚本项目链接 tpcc_load_parallel.sh,加载效率至少提升10倍以上。
三、TPCC压测tpcc_start 工具用于tpcc压测,其用法如下:tpcc_start -h server_host -P port -d database_name -u mysql_user -p mysql_password \\\n-w warehouses -c connections -r warmup_time -l running_time -i report_interval -f report_file
几个选项稍微解释下
-w 指定仓库数量\n-c 指定并发连接数\n-r 指定开始测试前进行warmup的时间,进行预热后,测试效果更好\n-l 指定测试持续时间\n-i 指定生成报告间隔时长\n-f 指定生成的报告文件名
实例:
tpcc_start -h 172.26.151.78 -P 3306 -d tpcc -u tpcc -p tpcc@1234 \\\n -w 5 -c 16 -r 120 -l 60 -f tpcc_mysql.log >> tpcc_run_result.log 2>&1
说明:模拟5个仓库规模,并发 16个线程进行测试,热身时间为 120秒, 压测时间为 60秒。
真实测试场景中,建议预热时间不小于5分钟,持续压测时长不小于30分钟,否则测试数据可能不具参考意义。
四、TPCC测试结果解读测试结果输出如下:
***************************************\n***