MySQLSlap是从MySQL的5.1.4版开始就开始官方提供的压力测试工具,如果使用rpm安装,下载mysql client rpm包安装后可直接使用,查看mysql中是否存在mysqlslap,在mysql的bin文件中查看是否存在mysqlslap即可。MySQLSlap通过模拟多个并发客户端并发访问MySQL来执行压力测试,同时提供了较详细的SQL执行数据性能报告,并且能很好的对比多个存储引擎(MyISAM,InnoDB等)在相同环境下的相同并发压力下的性能差别。
MySQLSlap特点是语法简洁,使用方便,可对mysql进行针对性的压力测试,一般情况下足够。但是如果需要测试硬件、系统性能,或者对数据库性能要求较高,需要对数据库进行长时间的高并发、压力测试,那就最好使用Sysbench。
常用参数:
--create-schema=name
# 指定测试的数据库名,默认是mysqlslap
--engine=name
# 创建测试表所使用的存储引擎,可指定多个
--query=name
# 查询脚本,可以是SQL语句,也可以调用存储过程
--concurrency=N
# 模拟N个客户端并发执行。可指定多个值,以逗号或者
--number-of-queries=N
# 总的测试查询次数(并发客户数×每客户查询次数),比如并发是10,总次数是100,那么10个客户端各执行10个
--iterations=N
# 迭代执行的次数,即重复的次数(相同的测试进行N次,求一个平均值),指的是整个步骤的重复次数,包括准备数据、测试load、清理
--commit=N
# 执行N条DML后提交一次
--auto-generate-sql, -a
# 自动生成测试表和数据,表示用mysqlslap工具自己生成的SQL脚本来测试并发压力。
--auto-generate-sql-load-type=name
# 测试语句的类型。代表要测试的环境是读操作还是写操作还是两者混合的。
# 取值包括:read (scan tables), write (insert into tables), key (read primary keys), update (update primary keys), or mixed (half inserts, half scanning selects). 默认值是:mixed.
--auto-generate-sql-add-auto-increment
# 对生成的表自动添加auto_increment列,从5.1.18版本开始支持。
--number-char-cols=name
# 自动生成的测试表中包含N个字符类型的列,默认1
--number-int-cols=name
# 自动生成的测试表中包含N个数字类型的列,默认1
--debug-info
# 打印内存和CPU的信息
测试
1,分别测试20,100个客户端并发连接处理 1000 个 query,当测试20个客户端并发,每个客户端执行50个处理;当测试100个客户端并发,每个客户端执行10个处理。
[root@localhost]# mysqlslap -uroot -p123456 --create-schema='db1' --query='select * from tab1' --concurrency=20,100 --number-of-queries=1000 --debug-info
2,分别测试20,100个客户端并发连接处理 1000 个 query,循环5次。
[root@localhost]# mysqlslap -uroot -p123456 --create-schema='db1' --query='select * from tab1' --concurrency=20 --number-of-queries=1000 ---iterations=5 --debug-info