不用写代码,一键测完 MySQL 性能,自动出对比报告

24 阅读3分钟

不用写代码,一键测完 MySQL 性能,自动出对比报告

做运维/DBA的都懂:每次数据库选型、参数调优、新服务器验收,都要跑性能测试。 但每次都要现写脚本、现调参数、现整理报告,太浪费时间了。 我把自己用了几年的测试脚本整理成了一个开箱即用的工具,分享给大家。


你是不是也有这些痛点?

场景1:领导说"新到的服务器,测一下性能看看行不行"

你:好的。 然后你开始搜:fio怎么用?sysbench参数怎么设?IOPS多少算正常? 折腾一下午,测完了,结果是一堆txt日志,领导问"性能到底行不行",你答不上来。

场景2:要对比 MySQL 5.7 和 8.0 哪个好

你:好的。 然后你装两个版本,写两套脚本,跑两遍,然后手动把结果填到Excel里,再画个图。 一天就过去了。

场景3:改了个数据库参数,想看看性能有没有提升

你:好的。 然后你跑一遍,记下来结果,改参数,重启,再跑一遍,再对比。 又是半天。


这个工具解决了什么?

我把上面这些重复劳动全部脚本化了。现在你只需要:

./dbbench.sh all

就这一条命令,自动完成:

  1. 准备测试数据
  2. 按并发梯度逐档压测(1→4→8→16→32→64→128)
  3. 每个场景输出 TPS / QPS / 平均延迟 / P95延迟
  4. 生成 CSV 报告文件
  5. 清理测试数据

测完之后,你想对比两次结果?

./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 的机器上跑的:

数据库性能测试结果

测试场景并发TPSQPS平均延迟P95延迟
只读点查1260.924174.763.83ms4.74ms
只读点查42713.8543421.521.47ms2.18ms
读写混合1153.063061.216.53ms10.46ms
读写混合4562.0411240.887.11ms11.24ms

磁盘IO测试结果

场景吞吐率IOPS平均延迟P99延迟
顺序读2349 MB/s234813.6ms-
顺序写2375 MB/s237513.5ms21.6ms
随机读62.5 MB/s160008.0ms19.0ms
随机写67.6 MB/s173007.4ms10.6ms

对比报告长什么样?

测试场景并发A-TPSB-TPSTPS变化A-P95延迟B-P95延迟延迟变化
只读点查42561989-61.0%2.11ms6.67ms+216%
读写混合4566540-4.0%10.27ms12.52ms+21%

适合谁用?

  • 运维工程师:新服务器验收、数据库选型对比
  • DBA:参数调优前后对比、版本升级性能验证
  • 集成商/方案商:投标时出性能测试报告
  • 技术负责人:判断硬件/数据库选型值不值

项目地址

Gitee:gitee.com/MapLover/db…


最后说两句

这个工具是我自己平时工作中用的脚本整理出来的,不是什么高大上的东西,但确实能省不少时间。

如果你觉得有用,点个 star,或者评论区说说你平时怎么做性能测试。

有什么问题也可以评论区交流。


标签:#数据库 #MySQL #PostgreSQL #性能测试 #运维 #DBA #sysbench #fio