lihm01 | 06 一月, 2011 15:58
mysqlslap:load emulation client,mysql自帶的一個(gè)壓力測試工具,自5.1.4版本之后的MySQL client 包含了此工具,下載mysql client rpm包安裝后可直接使用
在使用mysqlslap的時(shí)候,可以指定sql語句或者是包含sql語句的文件,如果是文件,那么文件中的每一行至少有一個(gè)語句(不能一個(gè)sql語句分成兩行或多行),因?yàn)槟J(rèn)的分隔符(delimiter)是換行符,當(dāng)然,你也可以手動(dòng)重置新的分隔符。另外,你也不能在文件中添加注釋,mysqlslap不支持。。。
mysqlslap有三個(gè)步驟:
1、創(chuàng)建schema,table,或者任何你想用來測試的procedure和data,這個(gè)是單客戶端連接
2、進(jìn)行負(fù)載測試 load test,這一階段你可以模擬多客戶端連接
3、清理現(xiàn)場,你可以指定刪除不用的對(duì)象、數(shù)據(jù),這個(gè)是單客戶端連接
詳細(xì)的參數(shù)解釋:
********************************************************
–auto-generate-sql
自動(dòng)測試,整個(gè)步驟如下,準(zhǔn)備數(shù)據(jù)和壓力測試過程可以自定義參數(shù)配置。
準(zhǔn)備數(shù)據(jù):創(chuàng)建測試schema mysqlslap,在其中建一張測試表,包含兩個(gè)字段(CREATE TABLE `t1` (intcol1 INT(32) ,charcol1 VARCHAR(128));),插入99條隨即數(shù)據(jù)。
壓力測試:5個(gè)select和5個(gè)insert語句,交替執(zhí)行
清理現(xiàn)場:刪除schema mysqlslap
######################################################
與“創(chuàng)建測試表”相關(guān)的參數(shù):
######################################################
–auto-generate-sql-add-autoincrement
創(chuàng)建的測試表額外增加一個(gè)autoincrement字段,CREATE TABLE `t1` (id serial,intcol1 INT(32) ,charcol1 VARCHAR(128));
–auto-generate-sql-guid-primary
創(chuàng)建的測試表額外增加一個(gè)主鍵,與–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
創(chuàng)建的測試表中包含幾個(gè)索引
CREATE TABLE `t1` (id0 varchar(32) unique key,id1 varchar(32) unique key,intcol1 INT(32) ,charcol1 VARCHAR(128));
–number-char-cols=2
創(chuàng)建的測試表中字符型字段數(shù)量
CREATE TABLE `t1` (intcol1 INT(32) ,charcol1 VARCHAR(128),charcol2 VARCHAR(128));
–number-int-cols=2
創(chuàng)建的測試表中數(shù)值型字段數(shù)量
CREATE TABLE `t1` (intcol1 INT(32) ,intcol2 INT(32) ,charcol1 VARCHAR(128));
–engine=engine_name
創(chuàng)建的測試表的存儲(chǔ)引擎
–create
顯式指定準(zhǔn)備測試數(shù)據(jù)的sql,可以是sql file
######################################################
與“生成測試data”相關(guān)參數(shù)#
######################################################
–auto-generate-sql-write-number=#
全部的insert語句的數(shù)量
–auto-generate-sql-unique-write-number=#
不同的insert語句的數(shù)量
######################################################
與“生成測試query”相關(guān)參數(shù)
######################################################
–auto-generate-sql-execute-number
自動(dòng)生成的全部的query數(shù)量
–auto-generate-sql-unique-query-number=2
自動(dòng)生成的不同的query數(shù)量,我也搞不太清楚這個(gè)啥意思。
–auto-generate-sql-load-type
可以設(shè)置的值有: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=#
多少個(gè)sql之后提交一次
–number-of-queries=#
總的query次數(shù)(并發(fā)數(shù)concurrency 與 每個(gè)客戶端的query次數(shù)queries per client 的乘積)
如果設(shè)置–number-of-queries=10 –concurrency =2 那么每個(gè)客戶端執(zhí)行5個(gè)query
不能與auto-generate-sql-execute-number共存,auto-generate-sql-execute-number=number-of-queries/concurrency
######################################################
其他
######################################################
–host
–port
–user
–password
–protocol
–socket
–concurrency=#
并發(fā)數(shù)量
–iterations=#
重復(fù)的次數(shù)(相同的測試多進(jìn)行幾次,求一個(gè)平均值),指的是整個(gè)步驟的重復(fù)次數(shù),包括準(zhǔn)備數(shù)據(jù)、測試load、清理現(xiàn)場。
–delimiter
在不使用–auto-generate-sql的情況下,–create和–query后面指定的str或者sql-file中的語句分隔符,最好重新設(shè)置為”;”
–detach=#
在N個(gè)語句之后重新連接mysql,重新創(chuàng)立連接
–create-schema
進(jìn)行測試的schema(在mysql中也就是db),默認(rèn)會(huì)創(chuàng)建一個(gè)名為mysqlslap的schema
–post-query
–pre-query
測試前后執(zhí)行的sql(也可以是sql文件)
–post-system
–pre-system
測試前后執(zhí)行的os命令
–debug-info
打印內(nèi)存和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相關(guān)設(shè)置
《一個(gè)非常有用的參數(shù)》
–only-print
如果不知道測試內(nèi)容,可以使用–only-print把測試sql打印出來
當(dāng)你不知道某個(gè)參數(shù)作用的時(shí)候就可以結(jié)合它把測試sql打印出來對(duì)比一下就一清二楚了。
**************************************************
例子:
[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
聯(lián)系客服