MySQL基準測試
為什么需要基準測試:
- 可以獲知MySQL的工作負荷
- 獲取系統(tǒng)對不對事物處理的性能表現(xiàn)
搭建的虛擬環(huán)境,遠遠超過現(xiàn)實的針對的狀況 所能獲取的信息 - 降低風險,模擬評估硬件需求,降低調整帶來的風險
- 在環(huán)境變動時的性能表現(xiàn),如不同服務配置下的并發(fā)性能、用戶高峰時期,或者低峰期時的性能表現(xiàn)、對不同數(shù)據(jù)處理的性能等。
測試策略
- 集成式基準測試(full-stack):將整個應用作為整體來做基準測試
- 單件式基準測試(single-componet),單獨測出MySQL系統(tǒng)
集成式基準測試的原因
- 系統(tǒng)也許影響性能的不是MySQL瓶頸問題
- Web服務器,網絡條件,數(shù)據(jù)庫,應用程序的代碼都有可能影響性能, 測試不僅僅是評估MySQL的性能,而是整個系統(tǒng)的性能
- 整體測試可以獲得系統(tǒng)各部分高速緩存的性能報告
- 可以獲得系統(tǒng)真是的性能表現(xiàn), 而不僅僅是MySQL部分
一些問題: 整體測試復雜,需要更多的時間,工作量,難度也更加。另外基準測試的報告數(shù)據(jù)也許不能反映真實系統(tǒng)的性能表現(xiàn)。
單件式基準測試
1.只想知道MySQL的性能:如查詢(Query)、緩存(Cache)等問題
2.給出系統(tǒng)的一個性能快照,快速的改進系統(tǒng)
基準測試前,應當確認需要測試目標,這樣就可以決定是用什么工具,并安排測試計劃。
主要考慮一下測試度量標準評估測試目標:
1.吞吐量(throughput)
2.響應時間和延遲(Response time or latency)
通過工具和方式獲取相關事務處理的最短響應時間,最長響應時間,平均響應時間,延遲時間。統(tǒng)計某一事務、處理某段響應時間(如1mm~2mm)的所占比例。使用統(tǒng)計學和數(shù)據(jù)可視化工具把數(shù)據(jù)圖表化,以便于分析使用。
作 為系統(tǒng)的并發(fā)性一般被認為是同一時間多少用戶訪問網站,網站的并發(fā)量不代表MySQL數(shù)據(jù)庫的并發(fā)量。 更準確的度量是某峰值時間用戶同時可以產生多少并發(fā)請求。影響并發(fā)性的因素是多樣的,服務器軟件被指也會影響并發(fā)的性能,建站開發(fā)語言也會影響并發(fā)性能。 另外也許服務器有上千個MySQL連接,但實際上只有連接幾個同時在進行查詢,更新等操作而已。
4.拓展性(Scalability)
對于工作負荷量變化的系統(tǒng),拓展性是非常重要的。
一般建議需要滿足兩倍性。 如需要提供能應付事務平均吞吐量兩倍的系統(tǒng),兩倍的資源(如處理器,內存等)。
另外可以通過時序表(數(shù)據(jù)表,直方圖,匯總表)統(tǒng)計響應時間,吞吐量等,作為參考度量拓展性是否滿足要求。
基準測試常用工具
Full-stack tool
ab
http_load
http_load runs multiple http fetches in parallel, to test the throughput of a web server. However unlike most such test clients, it runs in a single process, so it doesn’t bog down the client machine. It can be configured to do https fetches as well.
The
Single-Component Tools
1.mysqlslap (http://dev.mysql.com/doc/refman/5.1/en/mysqlslap.html)
2.MySQL Benchmark Suite (sql-bench)
3.Super Smack
4.Database Test Suite
5.Percona’s TPCC-MySQL Tool
6.sysbench (https://launchpad.net/sysbench) is a multithreaded system benchmarking tool.
基準測試注意事項
1.忌諱:
A.100G的數(shù)據(jù),實際上只用到1G的測試數(shù)據(jù)
B.多用戶系統(tǒng),只測試單用戶數(shù)據(jù)
C.分布式系統(tǒng),卻只測試單服務器。
D.使用相同的查詢數(shù)據(jù),循環(huán)測試。實際中的查詢是不可能的,這會改變數(shù)據(jù)庫系統(tǒng)的緩存內容單數(shù)據(jù)卻會被緩存
E.忽略測試錯誤,故障的系統(tǒng)的基準測試沒有任何意義。
F.以及常見一些牛頭不對馬面的數(shù)據(jù)測試, 比如使用不真實的數(shù)據(jù),只會浪費測試時間和資金。
G. 請不要委托免費的測試組織測試
……….
2.設計與計劃
A.需要設計達到什么樣,比如高并發(fā)性,高吞吐量等
B.發(fā)話太多不寫了
3.怎么確定測試周期與時間多長為適宜(相信測試獲得的數(shù)據(jù),不要半途而廢,那樣還不如不做測試。一般測試但滿意為止)
3.獲取系統(tǒng)性能與狀態(tài)
4. 獲取正確的與需要信息。 (如果一時無法確認需要什么,盡可能獲取足夠多的數(shù)據(jù))
5.實用工具分析,度量性能。
關于數(shù)據(jù)分析與統(tǒng)計學的知識,請務必掌握了解。