一、mysqlslap 介绍
mysqlslap是从5.1.4版开始的一个MySQL官方提供的压力测试工具。通过模拟多个并发客户端访问MySQL来执行压力测试,同时详细的提供了“高负荷攻击MySQL”的数据性能报告。并且能很好的对比多个存储引擎在相同环境下的并发压力性能差别。如果是系统自带或者使用rpm包安装的mysql,安装了MySQL-client端的包就有mysqlslap这个工具。
二、mysqlslap 使用方法介绍
通过mysqlslap –help可以获得可用的选项,这里列一些主要的参数,更详细的说明参考官方手册。
1) --concurrency代表并发数量,多个可以用逗号隔开,例如:concurrency=10,50,100, 并发连接线程数分别是10、50、100个并发。
2) --engines代表要测试的引擎,可以有多个,用分隔符隔开。
3) --iterations代表要运行这些测试多少次。
4) --auto-generate-sql 代表用系统自己生成的SQL脚本来测试。
5)--auto-generate-sql-load-type 代表要测试的是读还是写还是两者混合的(read,write,update,mixed)
6) --number-of-queries 代表总共要运行多少次查询。每个客户端运行的查询数量可以用查询总数/并发数来计算。
7) --debug-info 代表要额外输出CPU以及内存的相关信息。
8) --number-int-cols :创建测试表的 int 型字段数量
9) --auto-generate-sql-add-autoincrement : 代表对生成的表自动添加auto_increment列,从5.1.18版本开始
10) --number-char-cols 创建测试表的 char 型字段数量。
11) --create-schema 测试的schema,MySQL中schema也就是database。
12) --query 使用自定义脚本执行测试,例如可以调用自定义的一个存储过程或者sql语句来执行测试。
13) --only-print 如果只想打印看看SQL语句是什么,可以用这个选项。
三、Demo 实例
下面我们使用几个demo实例来进行测试
1、Demo1
[root@localhost ~]# mysqlslap -uroot -p -S /home/mysql/mysql.sock --concurrency=50,100,200 --number-of-queries=200 --iterations=10 --auto-generate-sql --auto-generate-sql-load-type=mixed --auto-generate-sql-add-autoincrement --engine=myisam,innodb --debug-info
#备注本次测试以50,100,200个并发线程、运行200个查询、迭代10次,自动生成SQL测试脚本、读、写、更新混合测试、自增长字段、测试引擎为myisam,innodb,输出cpu资源信息
返回信息如下所示:
2、Demo2:指定数据库和sql语句
mysqlslap --concurrency=50,100,200 --iterations=10 --number-of-queries=200 --create-schema=‘OLAP1011‘ --query=‘select MAX(D_TF_YDFH_REALTIME.TDFDFH) as MAX___TDFDFH,D_TF_YDFH_REALTIME.TIME_ID,D_TF_YDFH_REALTIME.TIME_ID from D_TF_YDFH_REALTIME D_TF_YDFH_REALTIME where 1=1 group by D_TF_YDFH_REALTIME.TIME_ID LIMIT 2000;‘ --debug-info -uroot -p -S /home/mysql/mysql.sock
#备注使用mysqlslap指定sql语句进行测试
3、Demo3:测试用例
[root@localhost /]# mysqlslap --concurrency=50,100,200 --iterations=20 --number-int-cols=4 --number-char-cols=35 --auto-generate-sql --auto-generate-sql-add-autoincrement --auto-generate-sql-load-type=read --engine=myisam,innodb --number-of-queries=200 --verbose --socket=/home/mysql/mysql.sock -uroot -p
#系统脚本测试,增加int型 4列char 型35列,测试2种引擎myisam,innodb读的性能,分别用50,100,200个客户端对服务器进行测试总共200个查询语句 执行迭代20次查询
4、自建SQL测试用例
mysqlslap --create=/yourpath/Test1.sql --query=/yourpath/Test2.sql --concurrency=50,100,200 --iterations=20 --engine=myisam,innodb -u root -p
#在设定的yourpath目录下创建你的测试sql文Test1及Test2并进行50、100及200的模拟并发测试
参考:http://blog.chinaunix.net/uid-25723371-id-3498970.html
http://chenhao6.blog.51cto.com/6228054/1314418