MySQL基準測試

發表於2013-05-06

伯樂線上注:本文來自文章作者@IT技術櫻花祭 的投稿(原文連結)。如果其他朋友也想投稿,請發郵件至 webmaster@jobbole.com,或直接給@伯樂線上官方微博 私信投遞。

———————————————————-

為什麼需要基準測試:

  1. 可以獲知MySQL的工作負荷
  2. 獲取系統對不對事物處理的效能表現
  3.  搭建的虛擬環境,遠遠超過現實的針對的狀況 所能獲取的資訊<wbr>
  4. 降低風險,模擬評估硬體需求,降低調整帶來的風險
  5. 在環境變動時的效能表現,如不同服務配置下的併發效能、使用者高峰時期,或者低峰期時的效能表現、對不同資料處理的效能等。

測試策略

  1. 整合式基準測試(full-stack):將整個應用作為整體來做基準測試
  2. 單件式基準測試(single-componet),單獨測出MySQL系統

整合式基準測試的原因

1.系統也許影響效能的不是MySQL瓶頸問題
2.Web伺服器,網路條件,資料庫,應用程式的程式碼都有可能影響效能, 測試不僅僅是評估MySQL的效能,而是整個系統的效能
3.整體測試可以獲得系統各部分快取記憶體的效能報告
4.可以獲得系統真是的效能表現, 而不僅僅是MySQL部分

一些問題: 整體測試複雜,需要更多的時間,工作量,難度也更加。另外基準測試的報告資料也許不能反映真實系統的效能表現。

單件式基準測試

1.只想知道MySQL的效能:如查詢(Query)、快取(Cache)等問題
2.給出系統的一個效能快照,快速的改進系統

基準測試前,應當確認需要測試目標,這樣就可以決定是用什麼工具,並安排測試計劃。

主要考慮一下測試度量標準評估測試目標:

1.吞吐量(throughput)

單位時間處理的事務量
MySQL基準測試2.響應時間和延遲(Response time or latency)
通過工具和方式獲取相關事務處理的最短響應時間,最長響應時間,平均響應時間,延遲時間。統計某一事務、處理某段響應時間(如1mm~2mm)的所佔比例。使用統計學和資料視覺化工具把資料圖表化,以便於分析使用。MySQL基準測試

3.併發性(Concurrency)

作 為系統的併發性一般被認為是同一時間多少使用者訪問網站,網站的併發量不代表MySQL資料庫的併發量。 更準確的度量是某峰值時間使用者同時可以產生多少併發請求。影響併發性的因素是多樣的,伺服器軟體被指也會影響併發的效能,建站開發語言也會影響併發效能。 另外也許伺服器有上千個MySQL連線,但實際上只有連線幾個同時在進行查詢,更新等操作而已。

4.擴充性(Scalability)

對於工作負荷量變化的系統,擴充性是非常重要的。
一般建議需要滿足兩倍性。 如需要提供能應付事務平均吞吐量兩倍的系統,兩倍的資源(如處理器,記憶體等)。
另外可以通過時序表(資料表,直方圖,彙總表)統計響應時間,吞吐量等,作為參考度量擴充性是否滿足要求。

基準測試常用工具

Full-stack tool

ab – Apache HTTP server benchmarking tool
ab is a tool for benchmarking your Apache Hypertext Transfer Protocol (HTTP) server. It is designed to give you an impression of how your current Apache installation performs. This especially shows you how many requests per second your Apache installation is capable of serving. <wbr><wbr><wbr>

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. <wbr>

JMeter

The Apache JMeter™ <wbr>desktop application is open source software, a 100% pure Java application designed to load test functional behavior and measure performance. It was originally designed for testing Web Applications but has since expanded to other test functions. <wbr><wbr>

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的資料,實際上只用到1G的測試資料

B.多使用者系統,只測試單使用者資料

C.分散式系統,卻只測試單伺服器。

D.使用相同的查詢資料,迴圈測試。實際中的查詢是不可能的,這會改變資料庫系統的快取內容單資料卻會被快取

E.忽略測試錯誤,故障的系統的基準測試沒有任何意義。

F.以及常見一些牛頭不對馬面的資料測試, 比如使用不真實的資料,只會浪費測試時間和資金。

G. 請不要委託免費的測試組織測試

……….

2.設計與計劃

A.需要設計達到什麼樣,比如高併發性,高吞吐量等

B.發話太多不寫了

3.怎麼確定測試周期與時間多長為適宜(相信測試獲得的資料,不要半途而廢,那樣還不如不做測試。一般測試但滿意為止)

3.獲取系統效能與狀態

4. 獲取正確的與需要資訊。 (如果一時無法確認需要什麼,儘可能獲取足夠多的資料)

5.實用工具分析,度量效能。

關於資料分析與統計學的知識,請務必掌握瞭解。

 

相關文章