首頁  >  文章  >  資料庫  >  【MySQL資料庫】第二章解讀:MySQL基準測試

【MySQL資料庫】第二章解讀:MySQL基準測試

php是最好的语言
php是最好的语言原創
2018-08-07 11:50:421349瀏覽

前言:

       基準測試benchmark:基本技能,是針對系統設計的一種壓力測試,是唯一方便有效、可學習系統在給定的工作負載下回發生什麼的方法,他可以觀察系統在不同壓力下的行為,評估系統的容量,掌握哪些是重要的變化,或觀察系統如何處理不同的數據,可在系統實際負載外創建虛擬場景進行測試(掌握系統行為)

正文:

如前言,基準測試很、重、要!可以完成的工作: 總的來說:測試硬體、預估硬體、驗證系統、測壓力、調配置

        1、驗證基於系統的假設,確認假設是否符合實際情況;2、重現系統中某些異常行為,以解決;3、測試系統目前的運作情況,利用歷史結果分析診斷無法預測的問題; 4、模擬較高的負載找出系統隨壓力增加可能遇到的擴展性瓶頸;5、規劃未來的業務成長,硬體、網路容量、相關資源;6、測試應用適應可變環境的能力;7、測試不同的硬體、軟體和作業系統配置,證明設備是否配置正確;

   對資料庫的基準測試的作用,就是分析在目前的配置下(包括硬體配置、OS、資料庫設定等),資料庫的效能表現,從而找出MySQL的效能閾值,並根據實際系統的要求調整配置。 【源】

與真實壓力不同:真實的複雜多變;基準測試要求盡可能快執行完成,簡單直接、結果易比較、成本低易行

2.2策略

針對系統整體:整合式full-stack

單獨測試MySQL:單一元件式single-component

建議整體測試:要正確設定

       1、使用者關注的是整體的效能;2、MySQL並非總是瓶頸;3、更能揭示應用的真實表現

#推薦單獨測試:需要資料

       1、需比較不同schema或查詢的效能;2、針對某個特定問題的測試;3、避免漫長,做短期、快速週期循環

2.2.1指標

目標:細化為一系列問題,具體問題具體分析

吞吐量:

      單位時間內事務處理數,TPC-C、多重使用者互動應用,每秒事務數,每分鐘事務數

#反應時間或延遲

      測試任務所需的整體時間,平均響時、最小響時、最大和所佔百分比;使用圖表

並發性:

#測試應用在不同並發下的效能,關注正在工作中的並發操作、同時工作中的線程數連線數;

     web伺服器並發性! =資料庫的,僅表格會話儲存機制資料處理能力;測web並發任何時間有多少並發;

可擴充性

       擴充性:為系統增加一倍工作,理性狀況下能獲得兩部的結果;給予系統增加一倍資源可或2倍吞吐量

      系統業務壓力可能改變:測可擴展性非常必要;此指標對容量規格有用:提供資訊來發現應用瓶頸

盡可能收集測試需求,基於需求設計測試,忌只專注於部分指標,而忽略其他指標

2.3方法

要盡可能接近真實應用的情況:

     使用全集、資料分佈特性、真實分佈參數、是否有多個使用者、配對使用者行為、多重類型、檢查錯誤日誌、系統預熱:重新啟動後多久才達到正常效能容量、持續一定時間;

2.3.1設計、規格

提出問題、目標明確

     標準的基準測試:適當的方案TPC-H OLTP

     專用的測試:複雜、迭代,取得易還原的生產資料集快照

計畫: 參數、結果文件化、測試詳細記錄

2.3.2時間

基準測試應運行足夠長的時間,無法確認時間可一直運行,持續觀察知道確認系統已穩定

一個簡單的測試規則:等系統看起來穩定的時間至少=系統預熱的時間

2.3.3取得系統效能和狀態

盡量多收集被測系統的資訊

     best建置目錄、每執行一輪測試建立單獨子目錄,將結果、設定檔、測試指標、腳本和其他相關說明保存其中

需要記錄是資料:

     系統狀態、效能指標:CPU使用率 、磁碟I/O、網路流量統計、SHOWGLOBAL STATUS計數器

合理的間隔,記錄開始時間、利用時間戳記、只是收集就好

2.3.4取得精確的結果

回答一些問題:

     是否選擇了正確的基準測試?是否為問題收集了數據?預熱時間是否夠長?

     是否採用了錯誤的測試標準:IO密集型引用採用CPU密集型測試標準來評估效能?

     測試結果是否可重複?重測前確保系統狀態一致;對症測

影響因素:

      外在壓力、效能分析、監控系統、詳細日誌、週期性作業

##注意:

    過程中所需資源是專來測試的;測試中盡量少修改參數、透過迭代逐步修改基準測試的參數;認真研究過程中的異常情況並找到原因

2.3.5執行測試分析結果

自動化:減少人為失誤,Makefile檔案、腳本

測試結果滿足目前需求,簡單執行幾輪測試,看看結果就OK了,如結果變化很大,可多運行幾次、或更長

結果:

      分析,將數字變成知識,最終的目的是回答在設計時的問題

      如何抽像有意義的結果,依賴如何收集數據,寫腳本分析數據、減少人為失誤、工作量、可重複、文檔化

2.3.6繪圖

重要性

      一張圖勝過千言萬語嘛,原本有些知識點寶寶是想畫導圖的,但是麼有畫

     書中有這麼一個語句,分享一下:SHOW FULL PROCESSLIST    SHOW PROCESSLIST顯示哪些線程正在運行,您也可以使用mysqladmin processlist語句得到此信息,如果您有SUPER權限,您可以看到所有線程,否則,您只能看到您自己的線程,不使用FULL關鍵字,則只顯示每個查詢的前100個字元【來源】

2.4基準測試工具

整合測試工具:整個應用程式

     1、ab是Apache HTTP,每秒最多可處理多少請求【參考】【2】

     2、http_load:ab類似更靈活,被設計為對web伺服器測試,透過一個輸入檔提供多個URL,隨機選擇進行測試,也可定制,使其按照時間比率進行測試【參考】

     3、JMeter,java程序,可加載其他應用並測試其性能,這個聽不錯的,上面兩個沒有接觸過,不評論

單一組件式:測MySQL,基於MySQL的系統效能

      1、mysqlslap:mysql5.1後自帶,模擬伺服器的負載,輸出計時訊息,可執行並發連線數、指定sql語句,否則自動產生select語句【參考】

     2、MySQL Benchmark Suite(sql-bench):自帶、5.7拿掉,基準測試套件,用在不同資料庫伺服器上進行

比較測試,單執行緒串列執行,測執行查詢的速度;包含了大量預定義測試,易使用,輕鬆比較不同引擎或配置的效能測試,CPU密集型的,結果會顯示哪些類型的操作在伺服器上執行更快,缺點:測試資料集小且無法用指定的數據,需要perl BDB支援;【參考】

    3、Super Smack:MySQL、 PostgreSQL,提供

壓力測試和負載平衡,複雜而強大的工具,可模擬多用戶訪問,加載測試資料到庫、隨機資料填充測試表【參考】

    4、Database Test Suite:類似某些工業標準測試的工具集,

免費TPC-C OLTP測試工具

    5、sysbench:

多執行緒系統壓測,根據影響資料庫伺服器效能的因素評估系統的效能,全能測試工具,支援MySQL、作業系統、硬體的硬體測試【參考】【2】

    MySQL的BENCHMARK()函數:測試特定操作的執行速度,參數可以是需要執行的次數或表達式(任何標量表達式)

2.5案例

#此處省略n字 

#2.6總結

   終於等到你~音樂起;建議至少要熟悉sysbench,如何使用oltp(比較不同系統效能) 和fileio 測試;經常執行基準測試,制定一些原則很必要,選擇合適的測試工具、建立腳本庫,收集資訊分析結果,熟練一種繪圖工具;

  大佬都這麼說了,所以你知道我的下一篇是什麼了嗎?

相關文章:

【MySQL資料庫】第一章解讀:MySQL架構與歷史

【MySQL資料庫】第三章解讀:伺服器效能剖析 (下)

以上是【MySQL資料庫】第二章解讀:MySQL基準測試的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn