其實(shí)mysql測(cè)試也沒(méi)有這么復(fù)雜,除了一些常用的select/insert/update/deletc這些外,其實(shí)測(cè)試他的并發(fā)量才是最重要的。比如在連接數(shù)1K的時(shí)候,并發(fā)量能否滿足當(dāng)前請(qǐng)求/服務(wù)器性能、內(nèi)存CPU使用情況。說(shuō)白了,測(cè)試mysql就是測(cè)試他的配置文件和并發(fā)量及服務(wù)器性能。
一、工具
首選工具mysql自帶的:mysqlslap
–auto-generate-sql, -a
自動(dòng)生成測(cè)試表和數(shù)據(jù)
–auto-generate-sql-load-type=type
測(cè)試語(yǔ)句的類型。取值包括:read,key,write,update和mixed(默認(rèn))。
–number-char-cols=N, -x N
自動(dòng)生成的測(cè)試表中包含多少個(gè)字符類型的列,默認(rèn)1
–number-int-cols=N, -y N
自動(dòng)生成的測(cè)試表中包含多少個(gè)數(shù)字類型的列,默認(rèn)1
–number-of-queries=N
總的測(cè)試查詢次數(shù)(并發(fā)客戶數(shù)×每客戶查詢次數(shù))
–query=name,-q
使用自定義腳本執(zhí)行測(cè)試,例如可以調(diào)用自定義的一個(gè)存儲(chǔ)過(guò)程或者sql語(yǔ)句來(lái)執(zhí)行測(cè)試。
–create-schema
測(cè)試的schema,MySQL中schema也就是database
–commint=N
多少條DML后提交一次
–compress, -C
如果服務(wù)器和客戶端支持都?jí)嚎s,則壓縮信息傳遞
–concurrency=N, -c N
并發(fā)量,也就是模擬多少個(gè)客戶端同時(shí)執(zhí)行select。可指定多個(gè)值,以逗號(hào)或者–delimiter參數(shù)指定的值做為分隔符
–engine=engine_name, -e engine_name
創(chuàng)建測(cè)試表所使用的存儲(chǔ)引擎,可指定多個(gè)
–iterations=N, -i N
測(cè)試執(zhí)行的迭代次數(shù)
–detach=N
執(zhí)行N條語(yǔ)句后斷開(kāi)重連
–debug-info, -T
打印內(nèi)存和CPU的信息
–only-print
只打印測(cè)試語(yǔ)句而不實(shí)際執(zhí)行
———————————————————————————————-
測(cè)試的過(guò)程需要生成測(cè)試表,插入測(cè)試數(shù)據(jù),這個(gè)mysqlslap可以自動(dòng)生成,默認(rèn)生成一個(gè)mysqlslap的schema,如果已經(jīng)存在則先刪除,這里要注意了,不要用–create-schema指定已經(jīng)存在的庫(kù),否則后果可能很嚴(yán)重。可以用–only-print來(lái)打印實(shí)際的測(cè)試過(guò)程:
# mysqlslap -a –only-print
DROP SCHEMA IF EXISTS `mysqlslap`; CREATE SCHEMA `mysqlslap`; use mysqlslap; CREATE TABLE `t1` (intcol1 INT(32) ,charcol1 VARCHAR(128)); INSERT INTO t1 VALUES (1804289383,'mxvtvmC9127qJNm06sGB8R92q2j7vTiiITRD9rdxBL'); … SELECT intcol1,charcol1 FROM t1; INSERT INTO t1 VALUES (364531492,'qMa5SuKo4M5OM7ldvisSc6WK9rsNTGFxkDJ4EAwW'); DROP SCHEMA IF EXISTS `mysqlslap`;可以看到最后由刪除一開(kāi)始創(chuàng)建的schema的動(dòng)作,整個(gè)測(cè)試完成后不會(huì)在數(shù)據(jù)庫(kù)中留下痕跡。假如我們執(zhí)行一次測(cè)試,分別50和100個(gè)并發(fā),執(zhí)行1000次總查詢,那么:
# mysqlslap -uroot -p123456 -a –concurrency=50,100 –number-of-queries 1000 –debug-info
Benchmark
Average number of seconds to run all queries: 0.375 seconds
新聞熱點(diǎn)
疑難解答
圖片精選