概述
兩種測試類型:集成式測試和單組件式測試。毫不奇怪,有些工具是針對整個應用進行測試,也有些工具是針對MySQL或者其他組件單獨進行測試的。集成式測試,通常是獲得整個應用概況的最佳手段。
一、集成式測試
1.1 ab
ab是一個Apache HTTP服務器基准測試工具。它可以測試HTTP服務器每秒最多可以處理多少請求。如果測試的是Web應用服務,這個結果可以轉換成整個應用每秒可以滿足多少請求。這是個非常簡單的工具,用途也有限,只能針對單個URL進行盡可能快的壓力測試。關於ab的更多信息可以參考
http://htpd.apache.org/docs/2.0/programs/ab.html。
1.2 http_load
http_load這個工具概念上和ab類似,也被設計為對Web服務器進行測試,但比ab要更加靈活。可以通過一個輸入文件提供多個URL,htypload在這些URL中隨機選擇進行測試。也可以定制http_load,使其按照時間比率進行測試,而不僅僅是測試最大請求處理能力。更多信息請參考
http:/hwwwacme.com/software/htup-load/。
1.3 JMeter
Meter是一個Java應用程序,可以加載其他應用並測試其性能。它雖然是設計用來測試Web應用的,但也可以用於測試其他諸如FTP服務器,或者通過JDBC進行數據庫查詢測試。 JMeter比ab和htp_load都要復雜得多。例如,它可以通過控制預熱時間等參數,更加靈活地模擬真實用戶的訪問。JMeter擁有繪圖接口(帶有內置的圖形化處理的功能),還可以對測試進行記錄,然后離線重演測試結果。更多信息請參考
http://jakarta.apache.org/jimeter/。
二、單組件式測試工具
2.1 mysqlslap mysqlslap
http://de.mysql.com/doc/refman/5.1/en/mysglslap.html可以模擬服務器的負載,並輸出計時信息。它包含在MySQL5.1的發行包中,應該在MySQL4.1或者更新的版本中都可以使用。測試時可以執行並發連接數,並指定SQL語句(可以在命令行上執行,也可以把SQL語句寫人到參數文件中)。如果沒有指定SQL語句,mysglslap 會自動生成查詢schema的SELECT語句。
2.2 MySQL Benchmark Suite(sql-bench)
可以用於在不同數據庫服務器上進行比較測試。它是單線程的,主要用於測試服務器執行查詢的速度。結果會顯示哪種類型的操作在服務器上執行得更快。 這個測試套件的主要好處是包含了大量預定義的測試,容易使用,所以可以很輕松地用於比較不同存儲引擎或者不同配置的性能測試。其也可以用於高層次測試,比較兩個服務器的總體性能。當然也可以只執行預定義測試的子集(例如只測試50|第2章 MySQL基准測試UPDATE的性能)。這些測試大部分是CPU密集型的,但也有些短時間的測試需要大量的磁盤I/O操作。 這個套件的最大缺點主要有:它是單用戶模式的,測試的數據集很小且用戶無法使用指定的數據,並且同一個測試多次運行的結果可能會相差很大。因為是單線程且串行執行的,所以無法測試多CPU的能力,只能用於比較單CPU服務器的性能差別。 使用這個套件測試數據庫服務器還需要Perl和BDB的支持,相關文檔請參考
http://dev.mysql.com/doc/en/mysql-benchmarks.html/
2.3 Super Smack
(htup://vegan.nettony/supersmack/)是一款用於MySQL和PostgreSQL的基准測試工具,可以提供壓力測試和負載生成。這是一個復雜而強大的工具,可以模擬多用戶訪問,可以加載測試數據到數據庫,並支持使用隨機數據填充測試表。 測試定義在“smack”文件中,smack文件使用一種簡單的語法定義測試的客戶端、表、查詢等測試要素。
2.4 Database Test Suite
是由開源軟件開發實驗室(OSDL,Open Source Development Labs)設計的,發布在SourceForge 網站
(http://sourceforge.net/projects/osdldbt/) 上,這是一款類似某些工業標准測試的測試工具集,例如由事務處理性能委員會(TPC,Transaction Processing Performance Council)制定的各種標准。特別值得一提的是,其中的dbt2就是一款免費的TPC-COLTP測試工具(未認證)。之前本書作者經常使用該工具,不過現在已經使用自己研發的專用於MySQL的測試工具替代了。
2.5 Percona's TPCC-MySOL Tool
我們開發了一個類似TPC-C的基准測試工具集,其中有部分是專門為MySQL測試開發的。在評估大壓力下MySQL的一些行為時,我們經常會利用這個工具進行測試(簡單的測試,一般會采用sysbench替代)。該工具的源代碼可以在https://launchpad.net/perconatools下載,在源碼庫中有一個簡單的文檔說明。
2.6 sysbench sysbench
https:/launchpad.net/sysbench是一款多線程系統壓測工具。它可以根據影響數據庫服務器性能的各種因素來評估系統的性能。例如,可以用來測試文件I/0、操作系統調度器、內存分配和傳輸速度、POSIX線程,以及數據庫服務器等。 sysbench 支持Lua腳本語言(htup://www.lua.org),Lua對於各種測試場景的設置可以非常靈活。sysbench是我們非常喜歡的一種全能測試工具,支持MySQL、操作系統和硬件的硬件測試。
