首页/数据/数据库速查/mysqlslap 自带压测工具
性能与调优57 条

mysqlslap 自带压测工具

MySQL 官方自带并发压测:模拟多客户端执行同一批 SQL,快速得到并发-耗时曲线,适合验证参数调整前后的差异。

数据库速查数据更新于 2026-10-13

自带的并发压测工具

mysqlslap 是 MySQL 客户端自带的压测程序,能模拟多个并发客户端反复执行同一批 SQL,输出平均、最小、最大耗时,适合在参数调整或索引改造前后做相对对比。它不自带事务语义分析与业务建模能力,因此结论只适合横向比较,不适合直接当作容量结论。

基本信息

适用MySQL 5.7 / 8.0 客户端自带,无需额外安装
核心参数--concurrency、--iterations、--number-of-queries
两种模式指定 --query 跑现成 SQL,或用 --auto-generate-sql 自动建表
注意事项对比测试必须固定并发、轮次、查询数与环境

并发查询压测

并发查询压测
mysqlslap --host=127.0.0.1 --user=bench --password=*** --concurrency=50 --iterations=5 --number-of-queries=1000 --query="SELECT id FROM users WHERE status=1" --create-schema=bench   # 50 并发执行 1000 次查询
mysqlslap --host=127.0.0.1 --user=bench --password=*** --concurrency=10,50,100 --iterations=3 --query="SELECT id FROM users WHERE status=1" --create-schema=bench   # 梯度压测看拐点
mysqlslap --host=127.0.0.1 --user=bench --password=*** --concurrency=50 --number-of-queries=1000 --query="SELECT id FROM users WHERE status=1" --create-schema=bench --csv=/tmp/slap.csv   # 输出 CSV 便于归档对比

自动生成表压测

自动生成表压测
mysqlslap --host=127.0.0.1 --user=bench --password=*** --concurrency=10,50,100 --iterations=3 --number-int-cols=4 --number-char-cols=20 --auto-generate-sql --engine=InnoDB --create-schema=bench2   # 自动建表并压测
mysqlslap --host=127.0.0.1 --user=bench --password=*** --auto-generate-sql-load-type=write --concurrency=20 --iterations=3 --engine=InnoDB --create-schema=bench2   # 只压写入路径

参数怎么读

参数含义使用建议
--concurrency并发客户端数,可逗号分隔多档梯度设置找出吞吐拐点
--iterations整套压测重复轮次至少 3 轮,取稳定值而非首轮
--number-of-queries总查询数单客户端实际执行数 = 总数 / 并发数
--auto-generate-sql自动建表并生成 SQL用于快速对比参数,不代表业务负载
--engine / --number-*-cols生成表的引擎与列数必须固定,否则跨轮次不可比

典型使用场景

  • 参数调整前后对比同一语句的耗时变化,例如缓冲池大小
  • 索引上线前验证目标语句在并发下的表现是否改善
  • 上线前做连接数与并发的摸底,观察吞吐从哪一档开始下滑
  • 复现并发热点:用相同语句多并发触发锁等待与竞争
  • 把结果导成 CSV 归档,形成版本间的性能基线
不要在生产库上跑 mysqlslap:自动生成 SQL 会产生真实写入与锁竞争,压测一律在隔离环境进行,并避免与备份窗口重叠。
对比测试的纪律是每次只改一个变量:并发、轮次、查询数、生成表结构与引擎都要固定,否则测量结果无法解释。

易错点

  • 用自动生成的 SQL 结论推断业务容量:表结构与访问模式差异大,只能做相对对比
  • 忘记固定 --engine 与字符集:跨轮次生成的表不是一回事,数值不可比
  • 只跑一轮就下结论:首轮受缓冲池预热影响明显,需要多轮取稳定值
  • 在生产实例上压测:真实写入叠加锁竞争,可能直接影响线上业务

数据来源与参考

  • MySQL 8.0 Reference Manual: mysqlslap

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌