【MySQL數(shù)據(jù)庫】第二章解讀:MySQL基準測試

前言:

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

正文:

如前言,基準測試很、重、要!可以完成的工作: 總的來說:測試硬件、預估硬件、驗證系統(tǒng)、測壓力、調(diào)配置

? ? ? ? 1、驗證基于系統(tǒng)的假設(shè),確認假設(shè)是否符合實際情況;2、重現(xiàn)系統(tǒng)中某些異常行為,以解決;3、測試系統(tǒng)當前的運行情況,利用歷史結(jié)果分析診斷無法預測的問題;?4、模擬更高的負載找出系統(tǒng)隨壓力增加而可能遇到的擴展性瓶頸;5、規(guī)劃未來的業(yè)務增長,硬件、網(wǎng)絡容量、相關(guān)資源;6、測試應用適應可變環(huán)境的能力;7、測試不同的硬件、軟件和操作系統(tǒng)配置,證明設(shè)備是否配置正確;

? ?對數(shù)據(jù)庫的基準測試的作用,就是分析在當前的配置下(包括硬件配置、OS、數(shù)據(jù)庫設(shè)置等),數(shù)據(jù)庫的性能表現(xiàn),從而找出mysql的性能閾值,并根據(jù)實際系統(tǒng)的要求調(diào)整配置。【源】

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

2.2策略

針對系統(tǒng)整體:集成式full-stack

單獨測試MySQL:單組件式single-component

推薦整體測試:要正確設(shè)置

? ? ? ?1、用戶關(guān)注的是整體的性能;2、MySQL并非總是瓶頸;3、更能揭示應用的真實表現(xiàn)

推薦單獨測試:需要數(shù)據(jù)

? ? ? ?1、需比較不同schema或查詢的性能;2、針對某個具體問題的測試;3、避免漫長,做短期、快速周期循環(huán)

2.2.1指標

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

吞吐量:

? ? ? 單位時間內(nèi)事務處理數(shù),TPC-C、多用戶交互式應用,每秒事務數(shù),每分鐘事務數(shù)

響應時間或延遲

? ? ? 測試任務所需的整體時間,平均響時、最小響時、最大和所占百分比;借助圖表

并發(fā)性:

? ? ?測試應用在不同并發(fā)下的性能,關(guān)注正在工作中的并發(fā)操作、同時工作中的線程數(shù) 連接數(shù);

? ? ?web服務器并發(fā)性!=數(shù)據(jù)庫的,僅表會話存儲機制數(shù)據(jù)處理能力;測web并發(fā) 任意時間有多少并發(fā);

可擴展性

? ? ? ?可擴展性:給系統(tǒng)增加一倍工作,理性情況下能獲得兩部的結(jié)果;給系統(tǒng)增一倍資源可或2倍吞吐量

? ? ? 系統(tǒng)業(yè)務壓力可能發(fā)生變化:測可擴展性非常必要;該指標對容量規(guī)范有用:提供信息來發(fā)現(xiàn)應用瓶頸

盡可能收集測試需求,基于需求設(shè)計測試,忌只關(guān)注部分指標,而忽略其他指標

2.3方法

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

? ? ?使用全集、數(shù)據(jù)分布特點、真實分布參數(shù)、是否多用戶、匹配用戶行為、多類型、檢查錯誤日志、系統(tǒng)預熱:重啟后多長時間才達到正常性能容量、持續(xù)一定時間;

2.3.1設(shè)計、規(guī)范

提出問題、目標明確

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

? ? ?專用的測試:復雜、迭代,獲易還原的生產(chǎn)數(shù)據(jù)集快照

計劃:?參數(shù)、結(jié)果文檔化、測試詳細記錄

2.3.2時間

基準測試應運行足夠長的時間,無法確認時間可一直運行,持續(xù)觀察知道確認系統(tǒng)已穩(wěn)定

一個簡單的測試規(guī)則:等系統(tǒng)看起來穩(wěn)定的時間至少=系統(tǒng)預熱的時間

2.3.3獲取系統(tǒng)性能和狀態(tài)

盡量多地收集被測系統(tǒng)的信息

? ? ?best建目錄、每執(zhí)行一輪測試創(chuàng)建單獨子目錄,將結(jié)果、配置文件、測試指標、腳本和其他相關(guān)說明保存其中

需要記錄是數(shù)據(jù):

? ? ?系統(tǒng)狀態(tài)、性能指標:CPU使用率 ?、磁盤I/O、網(wǎng)絡流量統(tǒng)計、SHOWGLOBAL STATUS計數(shù)器

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

2.3.4獲取準確的結(jié)果

回答些問題:

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

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

? ? ?測試結(jié)果是否可重復?重測前確保系統(tǒng)狀態(tài)一致;對癥測

影響因素:

? ? ? 外部壓力、性能分析、監(jiān)控系統(tǒng)、詳細日志、周期性作業(yè)

注意:

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

2.3.5運行測試分析結(jié)果

自動化:減少人為失誤,Makefile文件、腳本

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

結(jié)果:

?? ? ?分析,將數(shù)字變成知識,最終的目的是回答在設(shè)計時的問題

? ? ? 如何抽象有意義的結(jié)果,依賴于如何收集數(shù)據(jù),寫腳本分析數(shù)據(jù)、減少人為失誤、工作量、可重復、文檔化

2.3.6繪圖重要性

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

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

2.4基準測試工具

集成測試工具:整個應用

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

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

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

單組件式:測MySQL,基于MySQL的系統(tǒng)性能

? ? ? 1、mysqlslap:mysql5.1后自帶,模擬服務器的負載,輸出計時信息,可執(zhí)行并發(fā)連接數(shù)、指定sql語句,否則自動生成select語句【參考】

? ? ?2、MySQL Benchmark Suite(sql-bench):自帶、5.7拿掉,基準測試套件,用于不同數(shù)據(jù)庫服務器上進行比較測試,單線程串行執(zhí)行,測執(zhí)行查詢的速度;包含了大量預定義測試,易使用,輕松比較不同引擎或配置的性能測試,CPU密集型的,結(jié)果會顯示哪些類型的操作在服務器上執(zhí)行更快,缺點:測試數(shù)據(jù)集小且無法用指定的數(shù)據(jù),需要perl BDB支持;【參考】

? ? 3、Super Smack:MySQL、postgresql,提供壓力測試和負載均衡,復雜而強大的工具,可模擬多用戶訪問,加載測試數(shù)據(jù)到庫、隨機數(shù)據(jù)填充測試表【參考】

? ? 4、database Test Suite:類似某些工業(yè)標準測試的工具集,免費TPC-C OLTP測試工具

? ? 5、sysbench:多線程系統(tǒng)壓測,據(jù)影響數(shù)據(jù)庫服務器性能的因素評估系統(tǒng)的性能,全能測試工具,支持MySQL、操作系統(tǒng)、硬件的硬件測試【參考】【2】

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

2.5案例

此處省略n字?

2.6總結(jié)

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

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

相關(guān)文章:

【MySQL數(shù)據(jù)庫】第一章解讀:MySQL架構(gòu)與歷史

【MySQL數(shù)據(jù)庫】第一章解讀:MySQL架構(gòu)與歷史

? 版權(quán)聲明
THE END
喜歡就支持一下吧
點贊9 分享