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

來源:互聯網
上載者:User
前言:

基準測試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資料庫】第三章解讀:伺服器效能剖析 (下)

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.