一、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