qileilove

          blog已經(jīng)轉(zhuǎn)移至github,大家請訪問 http://qaseven.github.io/

          黃金法則:MySQL基準(zhǔn)測試最佳實踐

           MySQL基準(zhǔn)測試數(shù)據(jù)庫性能優(yōu)化中是一個非常重要的分支。本文目的在于讓讀者對關(guān)系型數(shù)據(jù)庫系統(tǒng)有一個基本的了解,掌握MySQL以及如何管理使用Linux。文中討論了MySQL性能因素以及如何測試CPU性能,同時使用具體的例子來展示幾種實用的測試MySQL系統(tǒng)的實踐方法。
            為什么數(shù)據(jù)庫管理員要在MySQL系統(tǒng)上運行基準(zhǔn)測試呢?答案顯而易見,倘若在一個模擬的實時環(huán)境中系統(tǒng)設(shè)計能夠承受住壓力并且滿足性能目標(biāo),那么數(shù)據(jù)庫管理員也無需大費周章了。
            在深入了解MySQL基準(zhǔn)測試程序機制前,弄清楚什么是基準(zhǔn)測試,這一點非常重要。簡單來說,基準(zhǔn)測試是“運行計算機程序或操作行為,通過運行一些標(biāo)準(zhǔn)測試和一系列的映襯來評估對象的相對性能。”
            CPU基準(zhǔn)測試主要用來測試硬件和運算能力,而軟件基準(zhǔn)測試更多的則是測試概念元素。
            在我們的案例中,軟件基準(zhǔn)測試中數(shù)據(jù)庫管理系統(tǒng)基準(zhǔn)測試是一個很好的例子。這種類型的測試目的是衡量數(shù)據(jù)庫管理系統(tǒng)的吞吐量和響應(yīng)時間。最終的測試結(jié)果會以分?jǐn)?shù)顯示,而這些分?jǐn)?shù)主要用來比較。
            數(shù)據(jù)庫管理員一般很難分清基準(zhǔn)測試和壓力測試之間的區(qū)別。這一點我們可以理解,因為這兩種條件有著類似的目標(biāo),即數(shù)據(jù)庫容量。兩者明顯的不同點在于:基準(zhǔn)測試給出的結(jié)果,以數(shù)字呈現(xiàn),能夠允許你在每個基準(zhǔn)測試和服務(wù)器/系統(tǒng)中調(diào)整設(shè)置,這是可以改變的,同時也能反應(yīng)出數(shù)據(jù)庫管理員是成功還是失敗。而壓力測試則是把系統(tǒng)推向極端邊緣用以了解系統(tǒng)的極限有多大。
            由于本文重點討論MySQL基準(zhǔn)測試而非壓力測試,所有后者我們不再進(jìn)行討論。在MySQL服務(wù)器運行基準(zhǔn)測試時,性能因素是數(shù)據(jù)庫管理員必須考慮的問題。那么,有哪些性能因素?答案就是:吞吐量,延遲時間和可擴展性。將這三個因素結(jié)合在一起,代表了MySQL服務(wù)器的整體性能。
            那么我們?nèi)绾芜M(jìn)行MySQL基準(zhǔn)測試呢?為了獲取正確的結(jié)果,請遵守以下一些規(guī)則:
            應(yīng)該多次檢查輸入的數(shù)據(jù);
            應(yīng)該多次運行基準(zhǔn)測試,至少5次;
            重新啟動MySQL服務(wù)器以消除任何不必要的緩存因素;
            數(shù)據(jù)庫管理員要有興趣、認(rèn)真對待進(jìn)程。
            下面有幾個影響基準(zhǔn)測試的例子,我們在任何時候都應(yīng)當(dāng)避免這種情況出現(xiàn):
            在一臺單一的虛擬機上運行基準(zhǔn)測試;
            不可忽視不同網(wǎng)絡(luò)基礎(chǔ)設(shè)施的影響;
            使用MySQL服務(wù)器默認(rèn)設(shè)置;
            無需根據(jù)服務(wù)器配置特定的和獨特的業(yè)務(wù)需求;
            無法消除緩存問題;
            運行基準(zhǔn)測試時,忽視任何不必要的緩存問題。
            如何在MySQL上運行基準(zhǔn)測試?
            在構(gòu)建MySQL網(wǎng)站時把現(xiàn)有的技術(shù)文檔增加到MySQL基準(zhǔn)測試中,這是一個非常實用的基準(zhǔn)測試功能。MySQL開發(fā)團(tuán)隊稱,BENCHMARK ()函數(shù)常被用來測試MySQL進(jìn)程有多快?它適用于MySQL客戶端。
            詳細(xì)功能顯示如:BENCHMARK (count, expr): The BENCHMARK ()函數(shù)執(zhí)行的表達(dá)式為expr重復(fù)計算次數(shù)。測試的結(jié)果值始終為0。基準(zhǔn)測試最重要的數(shù)字出現(xiàn)在幾秒鐘時間內(nèi)。如下圖示例:

          這里有一些技巧包括如何獲得BENCHMARK () 函數(shù)正確結(jié)果。這幾點如下:
            建議多次執(zhí)行該函數(shù);
            允許僅適用scalar表達(dá);
            表達(dá)式必須返回單個列或單個行;
            該功能減少了由于網(wǎng)絡(luò)或語法分析器而帶來的干擾。
            使用SysBench
            MySQL的開發(fā)者建議使用一款流行的測試工具——SysBench(由MySQL開發(fā)者開發(fā)),這是一款多功能的工具允許數(shù)據(jù)庫管理員測試CPU、文件IO以及MySQL性能。
            下面我們就來看下利用SysBench對CPU、MySQL進(jìn)行基準(zhǔn)測試。
            CPU性能
            用于CPU性能基準(zhǔn)測試命令顯示如下:該命令將啟動一個進(jìn)程并且產(chǎn)出大量的數(shù)字。
            sysbench --test=cpu --cpu-max-prime=20000 run
            然而,最重要的數(shù)字是以總的時間(以秒為單位)為主。利用所花費的時間來計算所需要的被測試的計算參數(shù)。這一點很重要,你可以用來對比基準(zhǔn)測試在橫跨多個系統(tǒng)時最有價值的數(shù)據(jù)。
            MySQL性能
            SysBench可以用來測量MySQL性能。要想做到這一點,首先我們可以在數(shù)據(jù)庫‘monitis’中創(chuàng)建1,000,000行數(shù)據(jù)測試表。通過以下命令執(zhí)行:
            sysbench --monitis=oltp --oltp-table-size=1000000 --mysql-db=monitis --mysql-user=root --mysql-password=yourrootsqlpassword prepare
            接著在MySQL基準(zhǔn)測試中輸入:
            sysbench --monitis=oltp --oltp-table-size=1000000 --mysql-db=monitis –mysql-user=root –mysql-password=yourrootsqlpassword –max-time=60 –oltp-read-only=on –max-requests=0 –num-threads=8 run
            當(dāng)基準(zhǔn)測試結(jié)果顯示后,查看交易列表。這個值是以每秒為交換單位。
            為了確保所需要的基準(zhǔn)測試在系統(tǒng)中能夠很好的運行,這里只需要輸入簡單的命令:
            sysbench -- monitis =oltp --mysql-db= monitis --mysql-user=root --mysql-password=yourrootsqlpassword cleanup
            盡管可能會出現(xiàn)大量的MySQL性能基準(zhǔn)測試類型,但上面的這些信息足夠你使用了。
            結(jié)束語:
            MySQL性能測試針對不同的項目采用不同的解決方案。這是因為由不同的需求、時間,目標(biāo)決定的。當(dāng)然在MySQL系統(tǒng)上運行基準(zhǔn)測試,就其技術(shù)本身而言在日常業(yè)務(wù)運作時也是非常必要的,希望這些實踐對你有所幫助。



          posted on 2014-01-27 10:43 順其自然EVO 閱讀(234) 評論(0)  編輯  收藏 所屬分類: 數(shù)據(jù)庫

          <2014年1月>
          2930311234
          567891011
          12131415161718
          19202122232425
          2627282930311
          2345678

          導(dǎo)航

          統(tǒng)計

          常用鏈接

          留言簿(55)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 东兰县| 浑源县| 钦州市| 博乐市| 武安市| 商丘市| 门头沟区| 莱州市| 景宁| 玉龙| 柳河县| 陈巴尔虎旗| 土默特左旗| 莱州市| 灵璧县| 富锦市| 大安市| 芜湖县| 固安县| 三门县| 竹北市| 乌鲁木齐市| 广河县| 新泰市| 永清县| 贵港市| 阜宁县| 汉源县| 同江市| 确山县| 清徐县| 筠连县| 黎城县| 尉犁县| 东海县| 红原县| 施秉县| 富蕴县| 宕昌县| 沙湾县| 青海省|