使用Mysqlslap对Mysql进行压力测试
概述
mysql5.1版本之后Mysql服务器自带的基准测试工具,随Mysql一起安装,可以模拟服务器负载,并输出相关的统计信息,可以指定或自动生成查询语句。
语法
# mysqlslap {options}
常用参数说明
- --auto-generate-sql 由系统自动生成SQL脚本和相关数据进行测试
- --auto-generate-sql-add-autoincrement 在生成的表中增加自增ID
- --auto-generate-sql-load-type 指定测试中使用的查询类型,默认是混合的
- --auto-generate-sql-write-number 指定初始化数据时生成的数据量,默认100行
- --concurrency 指定并发线程的数量
- --engine 指定测试表的存储引擎,用逗号分开多个存储引擎
- --no-drop 指定不清理测试数据
- --iterations 指定测试运行的次数
- --number-of-queries 指定每一个线程执行的查询数量
- --debug-info 指定输出额外的内存与cpu的统计信息
- --number-int-cols 指定测试表中包含INT类型列的数量
- --number-char-cols 指定测试表中包含的varchar类型的数量
- --create-schema 指定了用于执行测试的数据库的名字
- --query 指定自定义SQL脚本
- --only-print 并不运行测试脚本,而是把生成的脚本打印出来
示例
# mysqlslap
--concurrency=50,300 // 并发50,300个进程
--iterations=3 // 测试运行次数
--number-int-cols=5 // 整型类型列数量
--number-char-cols=5 // varchar类型列数量
--auto-generate-sql // 自动生成sql
--auto-generate-sql-add-autoincrement // 添加自增ID
--engine=innodb,myisam // 测试myisam,innodb引擎
--number-of-queries=10 // 查询次数
--create-schema=sbtest // 测试的数据库名
-uroot -p
单线程测试。测试做了什么。
# mysqlslap -a -uroot -p
多线程测试。使用–concurrency来模拟并发连接。# mysqlslap -a -c 100 -uroot -p
迭代测试。用于需要多次执行测试得到平均值。# mysqlslap -a -i 10 -uroot -p
测试同时不同的存储引擎的性能进行对比:# mysqlslap -a --concurrency=50,100 --number-of-queries 1000 --iterations=5 --engine=myisam,innodb --debug-info -uroot -p
执行一次测试,分别50和100个并发,执行1000次总查询:# mysqlslap -a --concurrency=50,100 --number-of-queries 1000 --debug-info -uroot -p