日期:2014-05-16  浏览次数:20823 次

mysqlslap使用

mysqlslap 是mysql自带的一个测试工具,只在mysql 5.1的client工具集中提供,不过可以直接copy出来,用在5.0的server上也是可以的。用来快速测试一些性能还是不错的。基本用法如下:
mysqlslap -uxxx -pxxx --create-schema=test --number-of-queries=5000000 --concurrency=1 -q"insert into t(v)values('aaaaaaa');"

其中: create-schema用来指定mysqlslap需要的数据库,如果不指定,他会默认找mysqlslap这个库。 number-of-queries,要执行的查询次数。 concurrency,并发的链接数。 -q 后面就是要执行的sql语句,也可以指定取一个文件中的数据。
参数说明
一些比较重要的参数:
--defaults-file,配置文件存放位置
--create-schema,测试的schema,MySQL中schema也就是database
--concurrency,并发数
--engines,测试引擎,可以有多个,用分隔符隔开。
--iterations,迭代的实验次数
--socket,socket,文件位置
--debug-info,打印内存和CPU的信息
--only-print,只打印测试语句而不实际执行
--auto-generate-sql,自动产生测试SQL
--auto-generate-sql-load-type,测试SQL的类型。类型有mixed,update,write,key,read。
--number-of-queries,执行的SQL总数量
--number-int-cols,表内int列的数量
--number-char-cols,表内char列的数量
--query=name,使用自定义脚本执行测试,例如可以调用自定义的一个存储过程或者sql语句来执行测
命令
测试,分别50和100个并发,执行1000次总查询:
$mysqlslap -a --concurrency=50,100 --number-of-queries 1000 --debug-info
$mysqlslap -a --only-print
测试同时不同的存储引擎的性能进行对比:
$ mysqlslap -a --concurrency=50,100 --number-of-queries 1000 --iterations=5 --engine=myisam,innodb --debug-info

这个东东高效方便灵活,是在是dba居家出行必备的杀人工具。
sql0中存放的是类似下面的数据
select id,title from blog_0 where id=2690
sql1中存放的是类似下面的数据
select id,title,body from blog_0 where id=2690
Select id,title from blog_0
#./mysqlslap --host=xx.db --create-schema=fb --query=sql0 --concurrency=100
Benchmark
Average number of seconds to run all queries: 185.740 seconds
Minimum number of seconds to run all queries: 185.740 seconds
Maximum number of seconds to run all queries: 185.740 seconds
Number of clients running queries: 100
Average number of queries per client: 100000
Select id,title,body from blog_2
# ./mysqlslap --host=xx.db --create-schema=fb --query=sql2 --concurrency=100
Benchmark
Average number of seconds to run all queries: 229.476 seconds
Minimum number of seconds to run all queries: 229.476 seconds
Maximum number of seconds to run all queries: 229.476 seconds
Number of clients running queries: 100
Average number of queries per client: 100000