mysqlslap:load emulation client,mysql自带的一个压力测试工具,自5.1.4版本之后的MySQL client 包含了此工具,下载mysql client rpm包安装后可直接使用
在使用mysqlslap的时候,可以指定sql语句或者是包含sql语句的文件,如果是文件,那么文件中的每一行至少有一个语句(不能一个sql语句分成两行或多行),因为默认的分隔符(delimiter)是换行符,当然,你也可以手动重置新的分隔符。另外,你也不能在文件中添加注释,mysqlslap不支持。。。
mysqlslap有三个步骤:
1、创建schema,table,或者任何你想用来测试的procedure和data,这个是单客户端连接
2、进行负载测试 load test,这一阶段你可以模拟多客户端连接
3、清理现场,你可以指定删除不用的对象、数据,这个是单客户端连接
详细的参数解释:
********************************************************
–auto-generate-sql
自动测试,整个步骤如下,准备数据和压力测试过程可以自定义参数配置。
准备数据:创建测试schema mysqlslap,在其中建一张测试表,包含两个字段(CREATE TABLE `t1` (intcol1 INT(32) ,charcol1 VARCHAR(128));),插入99条随即数据。
压力测试:5个select和5个insert语句,交替执行
清理现场:删除schema mysqlslap
######################################################
与“创建测试表”相关的参数:
######################################################
–auto-generate-sql-add-autoincrement
创建的测试表额外增加一个autoincrement字段,CREATE TABLE `t1` (id serial,intcol1 INT(32) ,charcol1 VARCHAR(128));
–auto-generate-sql-guid-primary
创建的测试表额外增加一个主键,与–auto-generate-sql-add-autoincrement冲突
CREATE TABLE `t1` (id varchar(32) primary key,intcol1 INT(32) ,charcol1 VARCHAR(128));
–auto-generate-sql-secondary-indexes=2
创建的测试表中包含几个索引
CREATE TABLE `t1` (id0 varchar(32) unique key,id1 varchar(32) unique key,intcol1 INT(32) ,charcol1 VARCHAR(128));
–number-char-cols=2
创建的测试表中字符型字段数量
CREATE TABLE `t1` (intcol1 INT(32) ,charcol1 VARCHAR(128),charcol2 VARCHAR(128));
–number-int-cols=2
创建的测试表中数值型字段数量
CREATE TABLE `t1` (intcol1 INT(32) ,intcol2 INT(32) ,charcol1 VARCHAR(128));
–engine=engine_name
创建的测试表的存储引擎
–create
显式指定准备测试数据的sql,可以是sql file
######################################################
与“生成测试data”相关参数#
######################################################
–auto-generate-sql-write-number=#
全部的insert语句的数量
–auto-generate-sql-unique-write-number=#
不同的insert语句的数量
######################################################
与“生成测试query”相关参数
######################################################
–auto-generate-sql-execute-number
自动生成的全部的query数量
–auto-generate-sql-unique-query-number=2
自动生成的不同的query数量,我也搞不太清楚这个啥意思。
–auto-generate-sql-load-type
可以设置的值有:read (scan tables), write (insert into tables), key (read primary keys), update (update primary keys), or mixed (half inserts, half scanning selects). The default is mixed.
–commit=#
多少个sql之后提交一次
–number-of-queries=#
总的query次数(并发数concurrency 与 每个客户端的query次数queries per client 的乘积)
如果设置–number-of-queries=10 –concurrency =2 那么每个客户端执行5个query
不能与auto-generate-sql-execute-number共存,auto-generate-sql-execute-number=number-of-queries/concurrency
######################################################
其他
######################################################
–host
–port
–user
–password
–protocol
–socket
–concurrency=#
并发数量
–iterations=#
重复的次数(相同的测试多进行几次,求一个平均值),指的是整个步骤的重复次数,包括准备数据、测试load、清理现场。
–delimiter
在不使用–auto-generate-sql的情况下,–create和–query后面指定的str或者sql-file中的语句分隔符,最好重新设置为”;”
–detach=#
在N个语句之后重新连接mysql,重新创立连接
–create-schema
进行测试的schema(在mysql中也就是db),默认会创建一个名为mysqlslap的schema
–post-query
–pre-query
测试前后执行的sql(也可以是sql文件)
–post-system
–pre-system
测试前后执行的os命令
–debug-info
打印内存和cpu信息
–ssl-ca=file_name
–ssl-capath=dir_name
–ssl-cert=file_name
–ssl-cipher=cipher_list
–ssl-key=file_name
–ssl-verify-server-cert
ssl相关设置
《一个非常有用的参数》
–only-print
如果不知道测试内容,可以使用–only-print把测试sql打印出来
当你不知道某个参数作用的时候就可以结合它把测试sql打印出来对比一下就一清二楚了。
**************************************************
例子:
[root@10.1.30.180 ~]# mysqlslap -a –auto-generate-sql-guid-primary –auto-generate-sql-load-type=mix –auto-generate-sql-unique-query-number=5 –auto-generate-sql-unique-write-number=6 –auto-generate-sql-secondary-indexes=4 –concurrency=100 –engine=myisam –number-char-cols=4 –number-int-cols=3 –post-system=”date” –verbose –pre-system=”date” –auto-generate-sql-execute-number=10011
Wed Nov 10 15:24:27 CST 2010
Wed Nov 10 15:25:38 CST 2010
Benchmark
Running for engine myisam
Average number of seconds to run all queries: 70.906 seconds
Minimum number of seconds to run all queries: 70.906 seconds
Maximum number of seconds to run all queries: 70.906 seconds
Number of clients running queries: 100
Average number of queries per client: 10011
[@more@]来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/23721637/viewspace-1044211/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/23721637/viewspace-1044211/