不用写代码,一键测完 MySQL 性能,自动出对比报告
做运维/DBA的都懂:每次数据库选型、参数调优、新服务器验收,都要跑性能测试。 但每次都要现写脚本、现调参数、现整理报告,太浪费时间了。 我把自己用了几年的测试脚本整理成了一个开箱即用的工具,分享给大家。
你是不是也有这些痛点?
场景1:领导说"新到的服务器,测一下性能看看行不行"
你:好的。 然后你开始搜:fio怎么用?sysbench参数怎么设?IOPS多少算正常? 折腾一下午,测完了,结果是一堆txt日志,领导问"性能到底行不行",你答不上来。
场景2:要对比 MySQL 5.7 和 8.0 哪个好
你:好的。 然后你装两个版本,写两套脚本,跑两遍,然后手动把结果填到Excel里,再画个图。 一天就过去了。
场景3:改了个数据库参数,想看看性能有没有提升
你:好的。 然后你跑一遍,记下来结果,改参数,重启,再跑一遍,再对比。 又是半天。
这个工具解决了什么?
我把上面这些重复劳动全部脚本化了。现在你只需要:
./dbbench.sh all
就这一条命令,自动完成:
- 准备测试数据
- 按并发梯度逐档压测(1→4→8→16→32→64→128)
- 每个场景输出 TPS / QPS / 平均延迟 / P95延迟
- 生成 CSV 报告文件
- 清理测试数据
测完之后,你想对比两次结果?
./dbbench.sh compare baseline.csv after_tuning.csv "参数调优前后对比"
自动输出对比表格,告诉你:TPS提升了多少%,延迟降低了多少%。
功能清单
磁盘IO测试(fio)
- 顺序读/写带宽测试
- 随机读/写 IOPS 测试
- 自动解析结果
数据库性能测试(sysbench)
- 支持 MySQL / MariaDB / PostgreSQL
- 7种测试场景:只读、读写混合、纯写、插入、删除、索引更新
- 自动并发梯度测试
- 自动输出 TPS / QPS / P95延迟
自动对比报告
- 两次测试结果自动对比
- 自动计算提升/下降百分比
- 输出 Markdown 表格
快速上手
1. 装依赖
# CentOS / Rocky
yum install -y sysbench fio bc
# Ubuntu
apt install -y sysbench fio bc
2. 配置数据库连接
cp config.conf config.local.conf
vim config.local.conf
改这几行就行:
DB_TYPE="mysql"
DB_HOST="127.0.0.1"
DB_PORT="3306"
DB_USER="root"
DB_PASSWORD="your_password"
DB_NAME="sbtest"
3. 跑测试
# 数据库性能测试(一键跑完)
./dbbench.sh all
# 或者只测磁盘IO(不用配数据库)
./dbbench.sh fio
实际跑出来的结果长什么样?
我在一台 Rocky Linux 8 + MariaDB 10.3 + NVMe SSD 的机器上跑的:
数据库性能测试结果
| 测试场景 | 并发 | TPS | QPS | 平均延迟 | P95延迟 |
|---|---|---|---|---|---|
| 只读点查 | 1 | 260.92 | 4174.76 | 3.83ms | 4.74ms |
| 只读点查 | 4 | 2713.85 | 43421.52 | 1.47ms | 2.18ms |
| 读写混合 | 1 | 153.06 | 3061.21 | 6.53ms | 10.46ms |
| 读写混合 | 4 | 562.04 | 11240.88 | 7.11ms | 11.24ms |
磁盘IO测试结果
| 场景 | 吞吐率 | IOPS | 平均延迟 | P99延迟 |
|---|---|---|---|---|
| 顺序读 | 2349 MB/s | 2348 | 13.6ms | - |
| 顺序写 | 2375 MB/s | 2375 | 13.5ms | 21.6ms |
| 随机读 | 62.5 MB/s | 16000 | 8.0ms | 19.0ms |
| 随机写 | 67.6 MB/s | 17300 | 7.4ms | 10.6ms |
对比报告长什么样?
| 测试场景 | 并发 | A-TPS | B-TPS | TPS变化 | A-P95延迟 | B-P95延迟 | 延迟变化 |
|---|---|---|---|---|---|---|---|
| 只读点查 | 4 | 2561 | 989 | -61.0% | 2.11ms | 6.67ms | +216% |
| 读写混合 | 4 | 566 | 540 | -4.0% | 10.27ms | 12.52ms | +21% |
适合谁用?
- 运维工程师:新服务器验收、数据库选型对比
- DBA:参数调优前后对比、版本升级性能验证
- 集成商/方案商:投标时出性能测试报告
- 技术负责人:判断硬件/数据库选型值不值
项目地址
Gitee:gitee.com/MapLover/db…
最后说两句
这个工具是我自己平时工作中用的脚本整理出来的,不是什么高大上的东西,但确实能省不少时间。
如果你觉得有用,点个 star,或者评论区说说你平时怎么做性能测试。
有什么问题也可以评论区交流。
标签:#数据库 #MySQL #PostgreSQL #性能测试 #运维 #DBA #sysbench #fio