熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> MySQL >> 正文

高性能MySQL:獲得准確的測試結果

2013-11-23 21:10:54  來源: MySQL 

   獲得准確的測試結果

  獲得准確測試結果的最好辦法是回答一些關於基准測試的基本問題是否選擇了正確的基准測試?是否為問題收集了相關的數據?是否采用了錯誤的測試標准?例如是否對一個I/O 密集型(I/Obound)的應用采用了CPU 密集型(CPUbound)的測試標准來評估性能?

  接著確認測試結果是否可重復每次重新測試之前要確保系統的狀態是一致的如果是非常重要的測試甚至有必要每次測試都重啟系統一般情況下需要測試的是經過預熱的系統還需要確保預熱的時間足夠長(請參考前面關於基准測試需要運行多長時間的內容)是否可重復如果預熱采用的是隨機查詢那麼測試結果可能就是不可重復的

  如果測試的過程會修改數據或者schema那麼每次測試前需要利用快照還原數據在表中插入 條記錄和插入 萬條記錄測試結果肯定不會相同數據的碎片度和在磁盤上的分布都可能導致測試是不可重復的一個確保物理磁盤數據的分布盡可能一致的辦法是每次都進行快速格式化並進行磁盤分區復制

  要注意很多因素包括外部的壓力性能分析和監控系統詳細的日志記錄周期性作業以及其他一些因素都會影響到測試結果一個典型的案例就是測試過程中突然有cron 定時作業啟動或者正處於一個巡查讀取周期(Patrol Read cycle)抑或RAID卡啟動了定時的一致性檢查等要確保基准測試運行過程中所需要的資源是專用於測試的如果有其他額外的操作則會消耗網絡帶寬或者測試基於的是和其他服務器共享的SAN 存儲那麼得到的結果很可能是不准確的

  每次測試中修改的參數應該盡量少如果必須要一次修改多個參數那麼可能會丟失一些信息有些參數依賴其他參數這些參數可能無法單獨修改有時候甚至都沒有意識到這些依賴這給測試帶來了復雜性

  一般情況下都是通過迭代逐步地修改基准測試的參數而不是每次運行時都做大量的修改舉個例子如果要通過調整參數來創造一個特定行為可以通過使用分治法(divideandconquer每次運行時將參數對分減半)來找到正確的值

  很多基准測試都是用來做預測系統遷移後的性能的比如從Oracle 遷移到MySQL這種測試通常比較麻煩因為MySQL 執行的查詢類型與Oracle 完全不同如果想知道在Oracle 運行得很好的應用遷移到MySQL 以後性能如何通常需要重新設計MySQL 的schema 和查詢(在某些情況下比如建立一個跨平台的應用時可能想知道同一條查詢是如何在兩個平台運行的不過這種情況並不多見)

  另外基於MySQL 的默認配置的測試沒有什麼意義因為默認配置是基於消耗很少內存的極小應用的有時候可以看到一些MySQL 和其他商業數據庫產品的對比測試結果很讓人尴尬可能就是MySQL 采用了默認配置的緣故讓人無語的是這樣明顯有誤的測試結果還容易變成頭條新聞

  固態存儲(SSD 或者PCIE 卡)給基准測試帶來了很大的挑戰 章將進一步討論最後如果測試中出現異常結果不要輕易當作壞數據點而丟棄應該認真研究並找到產生這種結果的原因測試可能會得到有價值的結果或者一個嚴重的錯誤抑或基准測試的設計缺陷如果對測試結果不了解就不要輕易公布有一些案例表明異常的測試結果往往都是由於很小的錯誤導致的最後搞得測試無功而返

       返回目錄高性能MySQL

       編輯推薦

       ASP NET開發培訓視頻教程

  數據倉庫與數據挖掘培訓視頻教程

       Oracle索引技術


From:http://tw.wingwit.com/Article/program/MySQL/201311/29736.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.