MySQL 基准测试工具tpcc-mysql使用手册及报告分析
发表于:2025-01-22 作者:千家信息网编辑
千家信息网最后更新 2025年01月22日,〇 下载安装git clone https://github.com/Percona-Lab/tpcc-mysql.gitcd tpcc-mysql/src && makemake如果成功后,会在tp
千家信息网最后更新 2025年01月22日MySQL 基准测试工具tpcc-mysql使用手册及报告分析
〇 下载安装
make如果成功后,会在tpcc-mysql目录下生成tpcc_load与tpcc_start两个工具。
make如果报错,一般原因是缺少mysql_config环境,报错形如:
〇 使用
① 在待测试的实例中创建一个db,名为tpcc:CREATE DATABASE tpcc;
② 导入一个tpcc-mysql目录下的表结构:mysql -u$user -p$password -h$host < ./tpcc-mysql/create_table.sql
③ load数据:
./tpcc-mysql/tpcc_load -h$host -d tpcc -u$user -p$password -w 1000 > tpcc.load &
当然这样load很慢,工具配套有一个简单的并行load数据的脚本,load.sh:
使用起来也是十分简单的:
脚本并不是很完善,需要自行修改脚本:
将HOST变量为mysql server的host,
将四个-p后加入密码。
使用如下:
第二个为warehouse的数量,此处为1000。
并行导入是基于四个部分进行的,分别为:
[part]: 1=ITEMS 2=WAREHOUSE 3=CUSTOMER 4=ORDERS
通过./tpcc_load --help,结合load.sh就可以理解。
④ 导入数据结束后,最后加一个index和fk:mysql -u -p < ./tpcc-mysql/add_fkey_idx.sql
⑤ 测试
./tpcc_start -h$host -u$user -p$password -d tpcc -w 1000 -c32 -r300 -l7200 > /data/tpcc.report 2>&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 仓库数量
-c 并发连接数
-r 开始测试前进行warm up的时间,进行预热后,测试效果更好,老叶建议300秒以上
-l 测试时间
-i 生成报告间隔时长
一般-f和-t无需指定,一般直接重定向拿到报告结果就足够
〇 报告分析
[server]: …………
[port]: 3306
[DBname]: tpcc
[user]: root
[pass]: *******
[warehouse]: 1000
[connection]: 32
[rampup]: 300 (sec.)
[measure]: 7200 (sec.)
RAMP-UP TIME.(300 sec.)
MEASURING START.
10, trx: 1670, 95%: 120.954, 99%: 143.328, max_rt: 291.917, 1675|207.554, 168|164.157, 167|745.408, 168|875.570
20, trx: 1656, 95%: 128.301, 99%: 150.585, max_rt: 229.172, 1650|102.471, 165|121.764, 165|569.108, 163|737.483
30, trx: 1679, 95%: 129.072, 99%: 151.535, max_rt: 197.850, 1682|103.436, 168|80.130, 168|658.822, 170|686.441
40, trx: 1662, 95%: 126.926, 99%: 147.551, max_rt: 182.245, 1656|122.172, 167|97.329, 167|567.806, 164|717.234
50, trx: 1650, 95%: 130.041, 99%: 151.807, max_rt: 201.568, 1657|124.149, 164|145.663, 164|660.545, 167|683.961
60, trx: 1659, 95%: 127.841, 99%: 148.926, max_rt: 189.087, 1653|107.867, 166|90.284, 165|535.922, 168|690.396
……………………………………………………………………………………………………
STOPPING THREADS................................
每隔10秒打印一次报告。
trx:1670:在给定间隔时间内(此处为10秒,下同)新产生的交易订单,越高越好。
95%: 120.954:在给定间隔时间内,95%以上笔订单,新产生的响应时间,越低越好。
99%: 143.328:在给定间隔时间内,99%以上笔订单,新产生的响应时间,越低越好。
max_rt: 291.917:在给定间隔时间内,产生订单最长的响应时间
1675|207.554, 168|164.157, 167|745.408, 168|875.570:其他类型的事务吞吐量和最大响应时间。
[0] sc:5 lt:1169114 rt:0 fl:0 avg_rt: 88.2 (5)
[1] sc:15 lt:1168760 rt:0 fl:0 avg_rt: 35.1 (5)
[2] sc:1597 lt:115317 rt:0 fl:0 avg_rt: 24.3 (5)
[3] sc:0 lt:116913 rt:0 fl:0 avg_rt: 318.2 (80)
[4] sc:0 lt:116914 rt:0 fl:0 avg_rt: 477.7 (20)
in 7200 sec.
-- 0代表新订单,1代表支付订单,2代表订单状态业务,3代表发货,4代表库存
-- sc:success成功,lt:late延迟,rt:retry重试,fl:failure失败,avg_rt:平均响应时间
-- 可以看出此次测试的mysql server几乎完全无法满足虚拟的tpcc业务。
-- 第二次统计结果
[0] sc:5 lt:1169123 rt:0 fl:0
[1] sc:15 lt:1169116 rt:0 fl:0
[2] sc:1597 lt:115317 rt:0 fl:0
[3] sc:0 lt:116913 rt:0 fl:0
[4] sc:0 lt:116914 rt:0 fl:0
(all must be [OK])-- 以下逻辑均需要ok才可通过
[transaction percentage]
Payment: 43.47% (>=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)]-- 响应耗时,需要90%+订单通过指标,才会成为OK
New-Order: 0.00% [NG] *
Payment: 0.00% [NG] *
Order-Status: 1.37% [NG] *
Delivery: 0.00% [NG] *
Stock-Level: 0.00% [NG] *
-- 这里再一次显示我测试的mysql server是"不通过"的。
9742.658 TpmC-- 该值为每分钟交易transaction数,为第一次产生的结果数/执行分钟=1169114/120
〇 参考文档
https://github.com/Percona-Lab/tpcc-mysql
作者微信公众号(持续更新)
〇 下载安装
- git clone https://github.com/Percona-Lab/tpcc-mysql.git
- cd tpcc-mysql/src && make
make如果成功后,会在tpcc-mysql目录下生成tpcc_load与tpcc_start两个工具。
make如果报错,一般原因是缺少mysql_config环境,报错形如:
- /bin/sh: mysql_config: command not found
- load.c:19:19: error: mysql.h: No such file or directory
- ………………
- 'MYSQL_TYPE_LONG' undeclared
- 'MYSQL_TYPE_STRING' undeclared
- ………………
- 并还有一些ERROR
- 原因是环境变量设置有误,或缺少mysql_config环境。
- 比如此处,设置一下环境变量:
- export PATH=$PATH:/data/mysql57/bin/
〇 使用
① 在待测试的实例中创建一个db,名为tpcc:CREATE DATABASE tpcc;
② 导入一个tpcc-mysql目录下的表结构:mysql -u$user -p$password -h$host < ./tpcc-mysql/create_table.sql
③ load数据:
./tpcc-mysql/tpcc_load -h$host -d tpcc -u$user -p$password -w 1000 > tpcc.load &
当然这样load很慢,工具配套有一个简单的并行load数据的脚本,load.sh:
使用起来也是十分简单的:
脚本并不是很完善,需要自行修改脚本:
将HOST变量为mysql server的host,
将四个-p后加入密码。
使用如下:
- bash load.sh $dbname $warehouse_count
第二个为warehouse的数量,此处为1000。
并行导入是基于四个部分进行的,分别为:
[part]: 1=ITEMS 2=WAREHOUSE 3=CUSTOMER 4=ORDERS
通过./tpcc_load --help,结合load.sh就可以理解。
④ 导入数据结束后,最后加一个index和fk:mysql -u -p < ./tpcc-mysql/add_fkey_idx.sql
⑤ 测试
./tpcc_start -h$host -u$user -p$password -d tpcc -w 1000 -c32 -r300 -l7200 > /data/tpcc.report 2>&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 仓库数量
-c 并发连接数
-r 开始测试前进行warm up的时间,进行预热后,测试效果更好,老叶建议300秒以上
-l 测试时间
-i 生成报告间隔时长
一般-f和-t无需指定,一般直接重定向拿到报告结果就足够
〇 报告分析
[server]: …………
[port]: 3306
[DBname]: tpcc
[user]: root
[pass]: *******
[warehouse]: 1000
[connection]: 32
[rampup]: 300 (sec.)
[measure]: 7200 (sec.)
RAMP-UP TIME.(300 sec.)
MEASURING START.
10, trx: 1670, 95%: 120.954, 99%: 143.328, max_rt: 291.917, 1675|207.554, 168|164.157, 167|745.408, 168|875.570
20, trx: 1656, 95%: 128.301, 99%: 150.585, max_rt: 229.172, 1650|102.471, 165|121.764, 165|569.108, 163|737.483
30, trx: 1679, 95%: 129.072, 99%: 151.535, max_rt: 197.850, 1682|103.436, 168|80.130, 168|658.822, 170|686.441
40, trx: 1662, 95%: 126.926, 99%: 147.551, max_rt: 182.245, 1656|122.172, 167|97.329, 167|567.806, 164|717.234
50, trx: 1650, 95%: 130.041, 99%: 151.807, max_rt: 201.568, 1657|124.149, 164|145.663, 164|660.545, 167|683.961
60, trx: 1659, 95%: 127.841, 99%: 148.926, max_rt: 189.087, 1653|107.867, 166|90.284, 165|535.922, 168|690.396
……………………………………………………………………………………………………
STOPPING THREADS................................
每隔10秒打印一次报告。
trx:1670:在给定间隔时间内(此处为10秒,下同)新产生的交易订单,越高越好。
95%: 120.954:在给定间隔时间内,95%以上笔订单,新产生的响应时间,越低越好。
99%: 143.328:在给定间隔时间内,99%以上笔订单,新产生的响应时间,越低越好。
max_rt: 291.917:在给定间隔时间内,产生订单最长的响应时间
1675|207.554, 168|164.157, 167|745.408, 168|875.570:其他类型的事务吞吐量和最大响应时间。
[0] sc:5 lt:1169114 rt:0 fl:0 avg_rt: 88.2 (5)
[1] sc:15 lt:1168760 rt:0 fl:0 avg_rt: 35.1 (5)
[2] sc:1597 lt:115317 rt:0 fl:0 avg_rt: 24.3 (5)
[3] sc:0 lt:116913 rt:0 fl:0 avg_rt: 318.2 (80)
[4] sc:0 lt:116914 rt:0 fl:0 avg_rt: 477.7 (20)
in 7200 sec.
-- 0代表新订单,1代表支付订单,2代表订单状态业务,3代表发货,4代表库存
-- sc:success成功,lt:late延迟,rt:retry重试,fl:failure失败,avg_rt:平均响应时间
-- 可以看出此次测试的mysql server几乎完全无法满足虚拟的tpcc业务。
-- 第二次统计结果
[0] sc:5 lt:1169123 rt:0 fl:0
[1] sc:15 lt:1169116 rt:0 fl:0
[2] sc:1597 lt:115317 rt:0 fl:0
[3] sc:0 lt:116913 rt:0 fl:0
[4] sc:0 lt:116914 rt:0 fl:0
(all must be [OK])-- 以下逻辑均需要ok才可通过
[transaction percentage]
Payment: 43.47% (>=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)]-- 响应耗时,需要90%+订单通过指标,才会成为OK
New-Order: 0.00% [NG] *
Payment: 0.00% [NG] *
Order-Status: 1.37% [NG] *
Delivery: 0.00% [NG] *
Stock-Level: 0.00% [NG] *
-- 这里再一次显示我测试的mysql server是"不通过"的。
9742.658 TpmC-- 该值为每分钟交易transaction数,为第一次产生的结果数/执行分钟=1169114/120
〇 参考文档
https://github.com/Percona-Lab/tpcc-mysql
作者微信公众号(持续更新)
时间
订单
测试
代表
报告
环境
成功
变量
数据
新产
结果
脚本
越好
工具
业务
原因
库存
数量
目录
交易
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
吴忠市第二届网络安全论坛
网络安全法共几章
数据库系统基本特征
学生服务器
广东网络安全产业规模全国领先
net中数据库修改数据
互联网人类点错了科技树
德惠网络安全监察局在哪
服务器和手机无线连接
数据库系统题库万维
软件开发质量月报
南京安卓系统软件开发
oracle安装详细教程服务器
阿里云租赁服务器报价
梁溪区计算机网络技术推广
戴尔服务器开机不进系统
服务器poc是什么意思
游戏产品数据库文档
通信软件开发过程参考价格
软件开发叫什么行业
新时代网络安全的目标
数据库中权限最大的是
数据库调用方法有哪些
easyui载入数据库
未来的计算机软件开发趋势
上海智能软件开发规格尺寸
服务器和网站有关吗
腾讯云服务器退款
央企劳务派遣软件开发
网络安全宣传依然艾特