MySQL 基准测试工具tpcc-mysql使用手册及报告分析
发表于:2024-11-30 作者:千家信息网编辑
千家信息网最后更新 2024年11月30日,〇 下载安装git clone https://github.com/Percona-Lab/tpcc-mysql.gitcd tpcc-mysql/src && makemake如果成功后,会在tp
千家信息网最后更新 2024年11月30日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安全错误
数据库的锁怎样保障安全
软件开发吗新趋势
嘉兴赫米网络技术
第十五届青少年网络安全大赛答案
iot的网络安全法规
上海浦东新区软件开发
数据库恢复技术 不正确
网络安全法规定义务
建立数据库是什么研究方法
网络安全 是经营范围吗
校园网络安全协会
中国数据库公司
校园网络安全班队会
三年级手抄报网络安全简单
软件开发的好网站
武汉大学国家网络安全夏令营
寻甸第三方软件开发市场报价
手机 流媒体 服务器
软件开发公司测试员
网络安全组织人员比例
中国国家动植物数据库官网
数据库建表并制定表空间
赤子城网络技术
云南网络安全预警通报
软件开发招投标规定
紫光展锐软件开发怎么样
寻甸第三方软件开发市场报价
如何制作土豆服务器
信息网络安全投稿经验
数据库中更新某一列的数据
如皋无忧网络技术推荐咨询