其中QPS和TPS自然是重點(diǎn)考察的性能指標(biāo)。其他指標(biāo)可以作為每次測(cè)試數(shù)據(jù)的參考數(shù)據(jù)列出。如果遇到瓶頸,可能還需要考量當(dāng)時(shí)系統(tǒng)的cpu,網(wǎng)絡(luò),磁盤的利用率情況。這個(gè)遇到具體問(wèn)題再具體分析。
工具方面,首選考察的自然是MySQL自帶的測(cè)試工具mysqlslap。
./mysqlslap -a --concurrency=50,100 --number-of-queries 1000 --iterations=5 --engine=myisam,innodb --debug-info -uroot -proot
一個(gè)簡(jiǎn)單的示例即可說(shuō)明工具的使用情況,
-a 自動(dòng)生成sql
--concurrency=50,100分別執(zhí)行50,100并發(fā),
--iterations=5 執(zhí)行5次,引擎分別選用myisam和innodb引擎測(cè)試。
--number-of-queries Limit each client to this number of queries (this is not
exact).(一個(gè)客戶端執(zhí)行的測(cè)試SQL數(shù)量上限,通過(guò)--only-print觀察自動(dòng)生成的sql的執(zhí)行情況來(lái)看,該條數(shù)限制的是準(zhǔn)備數(shù)據(jù)以外的SQL語(yǔ)句的條數(shù))
--engine=myisam,innodb 分別用myisam和innodb引擎進(jìn)行測(cè)試。
當(dāng)然你也可以通過(guò)-q指定你想要測(cè)試的sql腳本,測(cè)試結(jié)束后,mysqlslap會(huì)給出你測(cè)試的相關(guān)數(shù)據(jù)。
關(guān)于mysqlslap的更多參數(shù)可參考:http://dev.mysql.com/doc/refman/5.1/en/mysqlslap.html
從目前來(lái)看上手還是比較容易的。通過(guò)執(zhí)行的query數(shù)量和時(shí)間,很容易計(jì)算出tps和qps等指標(biāo)。
SysBench
也是MySQL官網(wǎng)提到的一個(gè)benchmark工具。只是在64位系統(tǒng)下安裝困難,限于網(wǎng)絡(luò)環(huán)境和考慮到其功能和我們即將進(jìn)行的測(cè)試場(chǎng)景,暫時(shí)放棄。
性能測(cè)試基礎(chǔ)準(zhǔn)備其他話題
在思考和驗(yàn)證怎樣使用mysqlslap規(guī)劃測(cè)試場(chǎng)景的過(guò)程中,收獲到一些離散的細(xì)節(jié)問(wèn)題,也在此一并記錄一下。也許哪天,哪一條就會(huì)有所幫助。
打開(kāi)MySQL general_log 記錄執(zhí)行的sql情況
默認(rèn)情況下該屬性是關(guān)閉的,通過(guò)set global general_log=ON 打開(kāi)后,可在log文件中查看數(shù)據(jù)庫(kù)執(zhí)行的sql記錄。該需求是OneCoder想要考察JDBC的batch insert的提交方式,究竟是數(shù)據(jù)庫(kù)中是執(zhí)行的多條insert然后commit還是一個(gè)insert values大列表的時(shí)候產(chǎn)生的。
對(duì)比批量插入數(shù)據(jù) 多條insert和一條insert 大values列表(values(),(),())方式,性能差別
從目前通過(guò)mysqlslap執(zhí)行測(cè)試的效果來(lái)看,后者明顯優(yōu)于前者。前者1000條平均時(shí)間大約是0.2ms,而后者在0.1ms左右。該測(cè)試想法是在通過(guò)mysqldump到處已有數(shù)據(jù)的時(shí)候發(fā)現(xiàn)其sql文件的生成方式的時(shí)候以及聯(lián)想到oracle到mysql的數(shù)據(jù)遷移工具的處理方式的時(shí)候想到的。
寫入性能瓶頸的一個(gè)大誤解
曾經(jīng)極大的錯(cuò)誤的認(rèn)為單線程下mysql可處理的批量插入數(shù)據(jù)量就是該節(jié)點(diǎn)的瓶頸,所以只認(rèn)為多線程并發(fā)寫入優(yōu)化只在NDB的環(huán)境下才有效。今天在看MySQL的一些benchmark圖表曲線的時(shí)候,猛然驚醒,并發(fā)數(shù)和tps的曲線是類拋物線的就說(shuō)明在一定并發(fā)數(shù)的范圍內(nèi),TPS是有明顯提高的。于是用以前的JDBC的代碼,增加了幾個(gè)線程,對(duì)同一個(gè)mysql并發(fā)寫入,果然TPS成倍提升。
今天總結(jié)的大概就這么多,由于是事后回憶總結(jié),不免有所遺漏,想起來(lái)再補(bǔ)充把。熱烈歡迎指導(dǎo)。
原文地址:MySQL性能測(cè)試—前期知識(shí)儲(chǔ)備, 感謝原作者分享。
聲明:本網(wǎng)頁(yè)內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問(wèn)題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com