Skip to content

MySQL-压力测试工具

mysqlslap

mysqlslap是MySQL官方提供的基准测试工具,用于评估数据库在高并发情况下的性能表现。它通过模拟多个客户端并发访问MySQL服务器来执行压力测试,并生成详细的性能报告。

基本特性

  • 易用性:提供简单的命令行界面,无需复杂配置即可开始测试
  • 负载模拟:能模拟多个客户端同时访问数据库的场景
  • 多测试模式:支持查询、插入、更新及混合操作测试
  • 引擎对比:可对比不同存储引擎(如InnoDB、MyISAM)在相同环境下的性能差异

主要参数说明

连接参数

  • --user/-u:连接数据库的用户名
  • --password/-p:连接密码
  • --host/-h:数据库服务器地址,默认为localhost

测试控制参数

  • --concurrency/-c:并发连接数,可指定多个值(如100,200,500)
  • --iterations/-i:测试迭代次数,用于获取更准确的平均值
  • --number-of-queries:总查询次数(并发数×每客户端查询数)

SQL生成参数

  • --auto-generate-sql/-a:自动生成测试表和数据
  • --auto-generate-sql-load-type:测试类型(read,write,update,key,mixed)
  • --number-int-cols/-y:测试表中整型列数量(默认1)
  • --number-char-cols/-x:测试表中字符型列数量(默认1)

自定义测试参数

  • --query/-q:使用自定义SQL语句测试
  • --create-schema:指定测试数据库名
  • --engine/-e:指定测试的存储引擎

诊断参数

  • --debug-info/-T:输出CPU和内存使用信息
  • --only-print:只打印测试SQL而不实际执行

使用示例

bash
# 自动生成SQL,100并发,测试1次,混合读写,InnoDB引擎,共5000次查询
mysqlslap -h127.0.0.1 -uroot -p123456 --concurrency=100 --iterations=1 \
--auto-generate-sql \
--auto-generate-sql-load-type=mixed \
--auto-generate-sql-add-autoincrement \
--engine=innodb \
--number-of-queries=5000

# 测试100,500,1000三种并发情况
mysqlslap -h127.0.0.1 -uroot -p123456 \
--concurrency=100,500,1000 \
--iterations=1 \
--auto-generate-sql \
--auto-generate-sql-load-type=mixed \
--auto-generate-sql-add-autoincrement \
--engine=innodb \
--number-of-queries=5000 \
--debug-info

# 使用自定义SQL测试
mysqlslap --defaults-file=/etc/my.cnf \
--concurrency=100 \
--iterations=1 \
--create-schema='demo' \
--query="select * from t1 where name='name'" engine=innodb \
--number-of-queries=2000 \
-uroot -p123456 -verbose

# 对比MyISAM和InnoDB引擎性能
mysqlslap -a \
--concurrency=50,100 \
--number-of-queries=1000 \
--iterations=5 \
--engine=myisam,innodb \
--debug-info -uroot -p123456