《高性能MySQL》學(xué)習(xí)筆記二基準(zhǔn)測試

????就是針對(duì)系統(tǒng)設(shè)計(jì)的一種壓力測試,是唯一方便有效的收捣、可以學(xué)習(xí)系統(tǒng)在給定的工作負(fù)載下會(huì)發(fā)生什么方法棉姐⊥懒校基準(zhǔn)測試畢竟不是真實(shí)壓力測試,所以做基準(zhǔn)測試只能說是進(jìn)行大概的測試伞矩,來確定系統(tǒng)大致的余量笛洛,其要求盡量簡單直接,結(jié)果之間容易相互比較乃坤,成本低且易于執(zhí)行

測試策略

????有兩種主要的策略:一是針對(duì)整個(gè)系統(tǒng)的整體測試苛让,另一個(gè)是單獨(dú)測試MySQL。其中對(duì)整個(gè)系統(tǒng)做集成式測試而不單獨(dú)測試MySQL的原因是:

1. 用戶不僅僅關(guān)注的是MySQL本身性能湿诊,而更多的是應(yīng)用整體性能

2. MySQL并非總是應(yīng)用的瓶頸狱杰,通過整體測試可以揭示這點(diǎn)

3. 對(duì)整體測試才會(huì)發(fā)現(xiàn)各部分之間的緩存帶來的影響

4. 更能揭示應(yīng)用的真實(shí)表現(xiàn)

????而由于對(duì)整體做基準(zhǔn)測試很難建立,有時(shí)候其實(shí)只需要關(guān)注MySQL本身的性能厅须,至少項(xiàng)目初期可以這么做仿畸,以下情況選擇只測試MySQL:

1. 需要比較不同的schema或查詢的性能

2. 針對(duì)應(yīng)用中某個(gè)具體問題的測試

3. 為畢淼漫長的基準(zhǔn)測試,想通過一個(gè)短期的基準(zhǔn)測試來檢測某些調(diào)整后的效果

測試指標(biāo)

????吞吐量:單位時(shí)間內(nèi)的事務(wù)處理數(shù)九杂。常用的測試單位是每秒事務(wù)數(shù)(TPS)或者分鐘事務(wù)數(shù)(TPM)颁湖。

????響應(yīng)時(shí)間或者延遲:用于測試任務(wù)所需的整體時(shí)間宣蠕。根據(jù)時(shí)間可以計(jì)算出平均響應(yīng)時(shí)間例隆、最小最大響應(yīng)時(shí)間和所占百分比。

????并發(fā)性:這里數(shù)據(jù)庫的并發(fā)性并不是同時(shí)創(chuàng)建的連接數(shù)抢蚀,而是同時(shí)執(zhí)行的查詢數(shù)镀层,換言之關(guān)注的是正在工作中的并發(fā)操作,或者是同時(shí)工作中的線程數(shù)或者連接數(shù)皿曲。當(dāng)并發(fā)性增加時(shí)唱逢,需要測量吞吐量是否下降,響應(yīng)時(shí)間是否變長屋休,如果是這樣坞古,應(yīng)用可能就無法處理峰值壓力。并發(fā)性測試通常不是為了測試應(yīng)用能達(dá)到的并發(fā)度劫樟,而是為了測試不同并發(fā)度下的性能痪枫。數(shù)據(jù)庫的并發(fā)性需要測量,可以通過sysbench指定32叠艳、64或128個(gè)線程測試奶陈,然后測試期間記錄MySQL的Threads_running狀態(tài)值。

????可擴(kuò)展性:指給系統(tǒng)增加一倍的工作附较,在理想情況下就能獲得兩倍的結(jié)果(即增加一倍吞吐量)吃粒,同時(shí)性能(響應(yīng)時(shí)間)必須在可接受的范圍內(nèi)。

測試方法

????如下錯(cuò)誤可能導(dǎo)致測試結(jié)果無用或者不準(zhǔn)確:

使用真實(shí)數(shù)據(jù)的子集而不是全集拒课,沒有結(jié)合實(shí)際的數(shù)據(jù)需求來

使用錯(cuò)誤的數(shù)據(jù)分布徐勃,數(shù)據(jù)分布狀態(tài)要符合真實(shí)數(shù)據(jù)的特點(diǎn)

使用不真實(shí)的分布參數(shù)事示,數(shù)據(jù)讀取特點(diǎn)不符合實(shí)際

多用戶場景下只做單用戶測試

單服務(wù)器上測試分布式應(yīng)用

與真實(shí)用戶行為不匹配

反復(fù)執(zhí)行同一個(gè)查詢

沒有檢查錯(cuò)誤,基準(zhǔn)測試后一定要檢查下錯(cuò)誤日志

忽略了系統(tǒng)預(yù)熱的過程疏旨,要了解系統(tǒng)重啟后需要多長時(shí)間才能達(dá)到正常的性能容量

使用默認(rèn)的服務(wù)器配置很魂,沒有使用優(yōu)化的配置

測試時(shí)間較短

總之就是要讓測試過程盡可能接近真實(shí)應(yīng)用的情況。

????要建立將參數(shù)和結(jié)果文檔化的規(guī)范檐涝,每一輪測試都必須進(jìn)行詳細(xì)記錄遏匆,做好設(shè)計(jì)和規(guī)劃。

????基準(zhǔn)測試應(yīng)該運(yùn)行足夠長的時(shí)間谁榜,系統(tǒng)需要預(yù)熱幅聘。(不然會(huì)有新版本沒有舊版本性能快的錯(cuò)覺)

????寫些腳本來獲取系統(tǒng)性能和狀態(tài),建議建立一個(gè)目錄為每一輪測試都創(chuàng)建單獨(dú)的子目錄窃植,里面保存著測試結(jié)果帝蒿、配置文件、測試指標(biāo)巷怜、腳本和其他說明葛超。

????為了確認(rèn)測試結(jié)果是否可重復(fù),每次重新測試之前要確保系統(tǒng)的狀態(tài)是一致的延塑,如果是非常重要的測試绣张,甚至每次都要重啟系統(tǒng)。一般情況下关带,需要測試的是經(jīng)過預(yù)熱的系統(tǒng)侥涵,還需要確保預(yù)熱時(shí)間足夠長、是否可重復(fù)宋雏。如果預(yù)熱采用的是隨機(jī)查詢芜飘,那么測試結(jié)果可能就不可重復(fù)。

????很多基準(zhǔn)測試都是用來做預(yù)測系統(tǒng)遷移后的性能的磨总,如從Oracle遷移到MySQL嗦明,很多情況下都需要重新設(shè)計(jì)MySQL的schema和查詢。

????基于MySQL的默認(rèn)配置測試沒有什么意義蚪燕,因?yàn)槠淠J(rèn)配置是基于消耗很少內(nèi)存的極小應(yīng)用娶牌,如果直接用其他的商業(yè)數(shù)據(jù)庫與MySQL默認(rèn)配置進(jìn)行對(duì)比測試是很沒有說服力的。

運(yùn)行與結(jié)果分析

????盡量采取自動(dòng)化測試邻薯,可以使用一個(gè)Makefile文件或者一組腳本裙戏。

????使用集成式的測試工具:

ab:一個(gè)Apache HTTP服務(wù)器基準(zhǔn)測試工具,可以測試HTTP服務(wù)器每秒最多可以處理多少請求厕诡。如果是針對(duì)應(yīng)用就是整個(gè)應(yīng)用每秒可以滿足多少請求累榜,是一個(gè)非常簡單的工具,但只能針對(duì)單個(gè)URL盡可能快的壓力測試。

http_load:與ab類似壹罚,但是可以輸入一個(gè)文件提供多個(gè)URL葛作,對(duì)這些URL進(jìn)行隨機(jī)選擇測試。

JMeter:一個(gè)java應(yīng)用程序猖凛,可以加載其他應(yīng)用并測試其性能赂蠢。比前兩個(gè)復(fù)雜,可以通過控制預(yù)熱時(shí)間等參數(shù)來更加靈活地模擬真實(shí)用戶的訪問辨泳,而且有繪圖接口虱岂,可以記錄測試數(shù)據(jù),然后離線重演測試結(jié)果菠红。

使用單組件測試工具(針對(duì)MySQL的):

mysqlslap:可以模擬服務(wù)器負(fù)載第岖,輸出計(jì)時(shí)信息。測試時(shí)可以執(zhí)行并發(fā)連接數(shù)量试溯,并指定sql語句蔑滓。如果沒有指定sql,會(huì)自動(dòng)生成查詢schema的select語句遇绞。

MySQL Benchmark Suite(sql-bench):可以用于不同MySQL數(shù)據(jù)庫服務(wù)器上進(jìn)行比較測試键袱,是單線程的,主要用于測試服務(wù)器執(zhí)行查詢的速度摹闽,比較哪種類型的操作在服務(wù)器上執(zhí)行得更快蹄咖。好處是包含大量預(yù)定義測試,容易使用钩骇,可以很輕松地用于比較不同存儲(chǔ)引擎或者不同配置的性能測試比藻,缺點(diǎn)是由于是單線程的铝量,所以無法測試多CPU的能力倘屹,只能比較單CPU服務(wù)器的性能差別。(該版本5.7已經(jīng)拿掉了慢叨,要學(xué)習(xí)只能參看5.6版本)

Super Smack:一款用于MySQL和PostgreSQL的基準(zhǔn)測試工具纽匙,可以提供壓力測試和負(fù)載生成,是一個(gè)強(qiáng)大復(fù)雜的工具拍谐,可以模擬多用于訪問烛缔,可以加載測試數(shù)據(jù)到數(shù)據(jù)庫,并使用隨機(jī)數(shù)據(jù)填充測試表轩拨。測試定義使用的是.smack文件践瓷。

Database Test Suite:一款類似某些工業(yè)標(biāo)準(zhǔn)測試的測試工具集。

Percona's TPCC-MySQL Tool:一個(gè)類似TPC-C的基準(zhǔn)測試工具集亡蓉,有部分是專門為MySQL測試開發(fā)的晕翠。(https://www.cnblogs.com/xuanzhi201111/p/4148434.html

sysbench:一款多線程系統(tǒng)壓測工具,可以根據(jù)影響數(shù)據(jù)庫服務(wù)器性能的各種因素來評(píng)估系統(tǒng)性能。功能強(qiáng)大淋肾,且支持Lua腳本語言硫麻,更加靈活。(https://blog.csdn.net/kikajack/article/details/79977108

總結(jié)

????每個(gè)MySQL使用者都應(yīng)該了解一些基準(zhǔn)測試的知識(shí)樊卓,正確描述問題拿愧,選擇合適基準(zhǔn)測試回答問題,設(shè)置測試參數(shù)碌尔,運(yùn)行浇辜,收集,分析唾戚。

????如果沒有做個(gè)基準(zhǔn)測試的建議至少要熟悉sysbench奢赂,可以先學(xué)習(xí)如何使用oltp和fileio測試【弊撸基準(zhǔn)測試很重要膳灶,比如SAN存儲(chǔ)真的出現(xiàn)壞盤,或者RAID控制器的緩存策略的配置不像工具中顯示哪有立由,通過對(duì)單磁盤測試如果發(fā)現(xiàn)每秒可以執(zhí)行14000次隨機(jī)讀轧钓,那么要么是碰到嚴(yán)重錯(cuò)誤或者配置出現(xiàn)問題。(一塊機(jī)械磁盤每秒只能執(zhí)行幾百次的隨機(jī)讀操作锐膜,因?yàn)閷さ啦僮餍枰獣r(shí)間的)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末毕箍,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子道盏,更是在濱河造成了極大的恐慌而柑,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,482評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件荷逞,死亡現(xiàn)場離奇詭異媒咳,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)种远,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,377評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門涩澡,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人坠敷,你說我怎么就攤上這事妙同。” “怎么了膝迎?”我有些...
    開封第一講書人閱讀 152,762評(píng)論 0 342
  • 文/不壞的土叔 我叫張陵粥帚,是天一觀的道長。 經(jīng)常有香客問我限次,道長芒涡,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,273評(píng)論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮拖陆,結(jié)果婚禮上弛槐,老公的妹妹穿的比我還像新娘。我一直安慰自己依啰,他們只是感情好乎串,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,289評(píng)論 5 373
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著速警,像睡著了一般叹誉。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上闷旧,一...
    開封第一講書人閱讀 49,046評(píng)論 1 285
  • 那天长豁,我揣著相機(jī)與錄音,去河邊找鬼忙灼。 笑死匠襟,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的该园。 我是一名探鬼主播酸舍,決...
    沈念sama閱讀 38,351評(píng)論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼里初!你這毒婦竟也來了啃勉?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 36,988評(píng)論 0 259
  • 序言:老撾萬榮一對(duì)情侶失蹤双妨,失蹤者是張志新(化名)和其女友劉穎淮阐,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體刁品,經(jīng)...
    沈念sama閱讀 43,476評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡泣特,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,948評(píng)論 2 324
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了哑诊。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片群扶。...
    茶點(diǎn)故事閱讀 38,064評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡及刻,死狀恐怖镀裤,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情缴饭,我是刑警寧澤暑劝,帶...
    沈念sama閱讀 33,712評(píng)論 4 323
  • 正文 年R本政府宣布,位于F島的核電站颗搂,受9級(jí)特大地震影響担猛,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,261評(píng)論 3 307
  • 文/蒙蒙 一傅联、第九天 我趴在偏房一處隱蔽的房頂上張望先改。 院中可真熱鬧,春花似錦蒸走、人聲如沸仇奶。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,264評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽该溯。三九已至,卻和暖如春别惦,著一層夾襖步出監(jiān)牢的瞬間狈茉,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,486評(píng)論 1 262
  • 我被黑心中介騙來泰國打工掸掸, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留氯庆,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,511評(píng)論 2 354
  • 正文 我出身青樓扰付,卻偏偏與公主長得像点晴,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子悯周,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,802評(píng)論 2 345