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)上運(yùn)行基準(zhǔn)測試呢?答案顯而易見,倘若在一個模擬的實時環(huán)境中系統(tǒng)設(shè)計能夠承受住壓力并且滿足性能目標(biāo),那么數(shù)據(jù)庫管理員也無需大費(fèi)周章了。
            在深入了解MySQL基準(zhǔn)測試程序機(jī)制前,弄清楚什么是基準(zhǔn)測試,這一點非常重要。簡單來說,基準(zhǔn)測試是“運(yùn)行計算機(jī)程序或操作行為,通過運(yùn)行一些標(biāo)準(zhǔn)測試和一系列的映襯來評估對象的相對性能。”
            CPU基準(zhǔn)測試主要用來測試硬件和運(yù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ù)器運(yùn)行基準(zhǔn)測試時,性能因素是數(shù)據(jù)庫管理員必須考慮的問題。那么,有哪些性能因素?答案就是:吞吐量,延遲時間和可擴(kuò)展性。將這三個因素結(jié)合在一起,代表了MySQL服務(wù)器的整體性能。
            那么我們?nèi)绾芜M(jìn)行MySQL基準(zhǔn)測試呢?為了獲取正確的結(jié)果,請遵守以下一些規(guī)則:
            應(yīng)該多次檢查輸入的數(shù)據(jù);
            應(yīng)該多次運(yùn)行基準(zhǔn)測試,至少5次;
            重新啟動MySQL服務(wù)器以消除任何不必要的緩存因素;
            數(shù)據(jù)庫管理員要有興趣、認(rèn)真對待進(jìn)程。
            下面有幾個影響基準(zhǔn)測試的例子,我們在任何時候都應(yīng)當(dāng)避免這種情況出現(xiàn):
            在一臺單一的虛擬機(jī)上運(yùn)行基準(zhǔn)測試;
            不可忽視不同網(wǎng)絡(luò)基礎(chǔ)設(shè)施的影響;
            使用MySQL服務(wù)器默認(rèn)設(shè)置;
            無需根據(jù)服務(wù)器配置特定的和獨(dú)特的業(yè)務(wù)需求;
            無法消除緩存問題;
            運(yùn)行基準(zhǔn)測試時,忽視任何不必要的緩存問題。
            如何在MySQL上運(yùn)行基準(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ù)字是以總的時間(以秒為單位)為主。利用所花費(fèi)的時間來計算所需要的被測試的計算參數(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)中能夠很好的運(yùn)行,這里只需要輸入簡單的命令:
            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)上運(yùn)行基準(zhǔn)測試,就其技術(shù)本身而言在日常業(yè)務(wù)運(yùn)作時也是非常必要的,希望這些實踐對你有所幫助。



          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)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 乌拉特前旗| 永清县| 济南市| 隆回县| 永川市| 鹿泉市| 金湖县| 招远市| 怀宁县| 蓬安县| 津南区| 赣州市| 杭锦旗| 分宜县| 宣汉县| 金堂县| 汝州市| 潮州市| 荥阳市| 永福县| 天台县| 徐汇区| 乳源| 甘德县| 手机| 绍兴县| 海宁市| 韩城市| 巴塘县| 义乌市| 仲巴县| 泗水县| 桦南县| 陆良县| 邯郸县| 沭阳县| 岑溪市| 荣昌县| 中宁县| 乌兰浩特市| 敖汉旗|