MySQL 基准测试工具tpcc-mysql使用手册及报告分析
发表于:2024-10-12 作者:千家信息网编辑
千家信息网最后更新 2024年10月12日,〇 下载安装git clone https://github.com/Percona-Lab/tpcc-mysql.gitcd tpcc-mysql/src && makemake如果成功后,会在tp
千家信息网最后更新 2024年10月12日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安全错误
数据库的锁怎样保障安全
战地指挥官服务器升级要等多久
Ec2000P服务器亿芯智控
戴尔数据库产品
安卓 时间同步服务器
开放网络安全知乎
互联网大会 科技发布成果
网络安全有关的法律规定
江阴高科技软件开发产品介绍
终结战场无法登录服务器
杭州数式网络技术有限公司
网络安全法的独立性
找不到对应的税控服务器
因为无法与服务器安全连接
excel中嵌入数据库
戴尔服务器管理控制台
hp 服务器进不了bios
我的世界野外生存服务器
U8采购入库单数据库表
网络安全法立法意义不包括
vs批量导入数据库
为什么acid数据库没有参数
新津塞纳春天互联网科技 电话
江阴高科技软件开发产品介绍
数据库表组织
山西浪潮服务器维修哪家便宜
网络安全平安校园
mssql清理数据库日志
深圳市天飞网络技术
战地5自建服务器没人
邀请软件开发者加入