本節應該包含MySQL基準套件(和crash-me)的技術描述,但是該描述還沒寫成。目前,你可以通過在MySQL源碼分發中的“sql-bench”目錄下的代碼和結果了解基準套件是如何工作的。
通過基準用戶可以了解一個給定的SQL實現在哪方面執行得很好或很糟糕。
注意,這個基準是單線程的,它可以測量操作執行的最小時間。我們計劃將來在基準套件中添加多線程測試。
要使用基準套件,必須滿足下面的要求:
· 基準套件隨MySQL源碼分發提供。可以從http://dev.mysql.com/downloads/下載分發,或者使用當前的開發源碼樹(參見2.8.3節,“從開發源碼樹安裝”)。
· 基準腳本用Perl編寫而成,使用Perl DBI模塊訪問數據庫服務器,因此必須安裝DBI。還需要為每個待測試的服務器提供服務器專用DBD驅動程序。例如,要測試MySQL、PostgreSQL和DB2,必須安裝DBD::mysql、DBD::Pg和DBD::DB2模塊。參見2.13節,“Perl安裝注意事項”。
獲得MySQL源碼分發后,可以在sql-bench目錄找到基準套件。要運行基準測試,應構建MySQL,然后進入sql-bench目錄并執行run-all-tests腳本:
shell> cd sql-bench
shell> perl run-all-tests --server=server_name
server_name是一個支持的服務器。要獲得所有選項和支持的服務器,調用命令:
shell> perl run-all-tests --help
crash-me腳本也位于sql-bench目錄。crash-me嘗試通過實際運行查詢確定數據庫支持的特性以及其功能和限制。例如,它確定:
· 支持什么列類型
· 支持多少索引
· 支持什么函數
· 查詢可以多大
· VARCHAR列可以多大
關于一些可移植的基準程序的例子,參見MySQL基準套件。請參見7.1.4節,“MySQL基準套件”。可以利用這個套件的任何程序并且根據你的需要修改它。通過這樣做,可以嘗試不同的問題的解決方案并測試哪一個是最好的解決方案。
另一個免費基準套件是開放源碼數據庫基準套件,參見http://osdb.sourceforge.net/。
在系統負載繁重時出現一些問題是很普遍的,并且很多客戶已經與我們聯系了,他們在生產系統中有一個(測試)系統并且有負載問題。大多數情況下,性能問題經證明是與基本數據庫設計有關的問題(例如,表掃描在高負載時表現不好)或操作系統或庫問題。如果系統已經不在生產系統中,它們大多數將很容易修正。
為了避免這樣的問題,應該把工作重點放在在可能最壞的負載下測試你的整個應用程序。你可以使用Super Smack。該工具可以從http://jeremy.zawodny.com/mysql/super-smack/獲得。正如它的名字所建議,它可以根據你的需要提供合理的系統,因此確保只用于你的開發系統。