濮阳杆衣贸易有限公司

主頁 > 知識庫 > 詳解GaussDB for MySQL性能優(yōu)化

詳解GaussDB for MySQL性能優(yōu)化

熱門標(biāo)簽:催天下外呼系統(tǒng) 呂梁外呼系統(tǒng) html地圖標(biāo)注并導(dǎo)航 400電話辦理服務(wù)價格最實(shí)惠 南太平洋地圖標(biāo)注 400電話變更申請 大豐地圖標(biāo)注app 北京金倫外呼系統(tǒng) 武漢電銷機(jī)器人電話

背景

我們先來看看MySQL 8.0的事務(wù)提交的大致流程

以上流程,是MySQL8.0對WAL原則的一種實(shí)現(xiàn),這個流程意味著,任何一個事務(wù)的提交,一定要完成write buffer和flush to disk流程。

然而那么這個流程中,有一個問題:每個服務(wù)器的CPU是有限的,服務(wù)器能處理的Thread也是有上限的,那么當(dāng)我們的業(yè)務(wù)的并發(fā)數(shù)量,遠(yuǎn)遠(yuǎn)大于我們服務(wù)器能并行處理的數(shù)量時,那么后來的事務(wù),只能等待前面的事務(wù)提交后才能被處理。在這之前,他們什么也做不了。因此,在大并發(fā)場景下,如何進(jìn)一步提升線程的使用率,是大并發(fā)事物寫入的一個關(guān)鍵。

靈感來源于生活

一個優(yōu)化,并不是憑空想象出來的,有時候,往往來源于現(xiàn)實(shí)生活。下面,我們先來看看我們身邊,和事務(wù)提交流程非常類似的一個例子:快遞。

現(xiàn)在的快遞配送,一般一個快遞員會負(fù)責(zé)一片區(qū)域,快遞剛開始興起時,數(shù)量不多,那么一個快遞員基本上可以在規(guī)定時間內(nèi)完成配送。

但是,隨著快遞數(shù)量越來越多,一個快遞員要在一個小區(qū)配送很長的時間,才能到下一個小區(qū),常常導(dǎo)致了快遞員無法準(zhǔn)時的配送。在這個問題的催動下,隨后,一個新的行業(yè)開始出現(xiàn) – 快遞驛站。

快遞的優(yōu)化原理

接下來,讓我們來看下,快遞驛站究竟解決了什么問題。

快遞的配送過程中,最耗時的,不是裝貨,不是卸貨,而是電話和等待。配送一個小區(qū)的時間,取決于這個最后一個來取快遞的人的時間,在最后一個人取完快遞錢,快遞員除了打電話,做不了其他任何事情(也沒有辦法通知下一個小區(qū)的人,因?yàn)樽詈笠粋€人來取得時間是無法確定的)。那么這個等待的時間,對于快遞員來說,就是一種浪費(fèi)。

快遞驛站可以很大程度解決這個問題,快遞員到了以后,只需要將快遞卸貨,即可前往下一個小區(qū),剩下的事情,就可以由驛站的人員來完成,大大提升了快遞員的配送效率。

分析

回過頭來,我們看看數(shù)據(jù)庫,如果把Transaction線程看做快遞員,存儲上的文件看做取快遞的人,那么我們會發(fā)現(xiàn)兩者有非常大的相似性。那么我們可以像快遞配送優(yōu)化那樣去優(yōu)化事務(wù)的處理流程嗎?答案是可以的。

根據(jù)快遞驛站的優(yōu)化原理,我們知道,快遞驛站幫快遞員免去了等待客戶取貨的時間,那么事務(wù)處理過程中,有沒有等待的過程呢?答案是有的,存儲的IO就是一個較長的等待。數(shù)據(jù)庫使用經(jīng)驗(yàn)豐富的開發(fā)人員來都知道,等待redo日志寫入存儲的磁盤IO性能,很大程度上決定了數(shù)據(jù)庫的寫入性能。對于現(xiàn)代數(shù)據(jù)庫來說,尤其對于GaussDB(for MySQL)這樣計算于存儲分離的數(shù)據(jù)庫,存儲的IO耗時,在事務(wù)處理的總耗時中,占據(jù)了不小的比例,雖然有l(wèi)og buffer的合并寫入,提升并發(fā)情況下的整體吞吐,但是如果在等待IO的這段時間中,這些線程能夠去做別的事情(例如處理等待中的其他事務(wù))。那么將會有進(jìn)一步的性能提升。

GaussDB(for MySQL)的優(yōu)化

既然找到了等待的點(diǎn),那么我們就可以像快遞配送的優(yōu)化方法,為數(shù)據(jù)庫,也創(chuàng)造一個“快遞驛站”,讓“快遞驛站”來做等待的事情,而事務(wù)線程就可以去處理其他等待中的事務(wù),讓CPU不會“閑下來”。

如圖5所示,GaussDB(for MySQL)當(dāng)redo日志的flush to disk動作完成后,即可進(jìn)行事務(wù)提交,但是此時并不應(yīng)答客戶端,而是直接處理下一個事務(wù)。同時使用少量”post comit worker線程”,來批量等待日志寫入完成(等待的過程其實(shí)并不占用CPU),并應(yīng)答客戶端,這就可以讓“等待”和“下一個事務(wù)的處理”并行化,讓CPU“閑不下來”。

實(shí)際測試

根據(jù)實(shí)際測試,在標(biāo)準(zhǔn)的sysbench寫入模型下,沒有使用Post Commit時,極限性能是35萬QPS左右,而使用Post commit后,可以到大42萬以上的QPS,提升了20%的寫入性能。

以上就是詳解GaussDB for MySQL性能優(yōu)化的詳細(xì)內(nèi)容,更多關(guān)于GaussDB for MySQL性能優(yōu)化的資料請關(guān)注腳本之家其它相關(guān)文章!

您可能感興趣的文章:
  • gaussdb 200安裝 data studio jdbc idea鏈接保姆級安裝步驟
  • 詳解GaussDB(DWS) explain分布式執(zhí)行計劃的示例
  • gaussDB數(shù)據(jù)庫常用操作命令詳解

標(biāo)簽:龍巖 西寧 麗水 徐州 南充 自貢 迪慶 無錫

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《詳解GaussDB for MySQL性能優(yōu)化》,本文關(guān)鍵詞  詳解,GaussDB,for,MySQL,性能,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《詳解GaussDB for MySQL性能優(yōu)化》相關(guān)的同類信息!
  • 本頁收集關(guān)于詳解GaussDB for MySQL性能優(yōu)化的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    禹城市| 新津县| 延安市| 金华市| 大冶市| 万年县| 丹巴县| 茶陵县| 盘山县| 永春县| 图木舒克市| 昆山市| 吉林省| 博野县| 长丰县| 金门县| 色达县| 乐业县| 南丰县| 湘西| 新晃| 信阳市| 宣威市| 刚察县| 双城市| 朔州市| 望城县| 临安市| 新沂市| 芮城县| 盐边县| 深泽县| 怀安县| 芮城县| 会同县| 斗六市| 乌鲁木齐县| 宣恩县| 濉溪县| 马龙县| 凌海市|