最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時(shí)間:2021年05月18日 11:17:27   作者:華為云開發(fā)者社區(qū)  
GaussDB(for MySQL)數(shù)據(jù)庫在寫入性能上,在業(yè)界同類產(chǎn)品中是最好的,這主要得益于GaussDB(for MySQL)在MySQL內(nèi)核方面的諸多優(yōu)化。其中有一項(xiàng)從“送快遞”得來靈感的優(yōu)化——事務(wù)異步提交,值得我們分析。

背景

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

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

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

靈感來源于生活

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

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

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

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

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

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

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

分析

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

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

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

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

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

實(shí)際測(cè)試

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

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

相關(guān)文章

  • Win下Mysql5.6升級(jí)到5.7的方法

    Win下Mysql5.6升級(jí)到5.7的方法

    MySQL的升級(jí)方式分為兩種:原地升級(jí)和邏輯升級(jí)。這兩種升級(jí)方式,本質(zhì)沒有什么區(qū)別的,下面通過本文給大家詳細(xì)介紹Win下Mysql5.6升級(jí)到5.7的方法,需要的的朋友參考下
    2017-04-04
  • mysql之動(dòng)態(tài)增添字段實(shí)現(xiàn)方式

    mysql之動(dòng)態(tài)增添字段實(shí)現(xiàn)方式

    這篇文章主要介紹了mysql之動(dòng)態(tài)增添字段實(shí)現(xiàn)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-05-05
  • MySQL綠色解壓縮版安裝與配置操作步驟

    MySQL綠色解壓縮版安裝與配置操作步驟

    這篇文章主要介紹了MySQL綠色解壓縮版安裝與配置操作步驟,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2018-05-05
  • 運(yùn)維角度淺談MySQL數(shù)據(jù)庫優(yōu)化(李振良)

    運(yùn)維角度淺談MySQL數(shù)據(jù)庫優(yōu)化(李振良)

    一個(gè)成熟的數(shù)據(jù)庫架構(gòu)并不是一開始設(shè)計(jì)就具備高可用、高伸縮等特性的,它是隨著用戶量的增加,基礎(chǔ)架構(gòu)才逐漸完善。這篇博文主要談MySQL數(shù)據(jù)庫發(fā)展周期中所面臨的問題及優(yōu)化方案
    2015-07-07
  • Linux下自動(dòng)備份MySQL的方法

    Linux下自動(dòng)備份MySQL的方法

    這篇文章主要介紹了Linux下自動(dòng)備份MySQL的方法,需要的朋友可以參考下
    2015-01-01
  • mysql unsigned 用法及相減出現(xiàn)補(bǔ)數(shù)溢出解決方法

    mysql unsigned 用法及相減出現(xiàn)補(bǔ)數(shù)溢出解決方法

    unsigned表示無符號(hào)的意思,也就是非負(fù)數(shù),只用于整型并且unsigned 是MYSQL自定義的類型,非標(biāo)準(zhǔn)SQL。用途1是紅苕說的起到約束數(shù)值的作用,2是可以增加數(shù)值范圍(相當(dāng)于把負(fù)數(shù)那部分加到正數(shù)上)。不過少用,不方便移植
    2012-04-04
  • 淺談慢SQL優(yōu)化之索引的作用

    淺談慢SQL優(yōu)化之索引的作用

    本文針對(duì)?MySQL?數(shù)據(jù)庫的?InnoDB?存儲(chǔ)引擎,介紹其中索引的實(shí)現(xiàn)以及索引在慢?SQL?優(yōu)化中的作用,本文主要討論不同場(chǎng)景下索引生效與失效的原因,感興趣的小伙伴可以跟著小編一起來探討
    2023-05-05
  • MySQL 分頁查詢的優(yōu)化技巧

    MySQL 分頁查詢的優(yōu)化技巧

    這篇文章主要介紹了MySQL 分頁查詢的優(yōu)化技巧,幫助大家更好的理解和學(xué)習(xí)使用MySQL,感興趣的朋友可以了解下
    2021-05-05
  • 數(shù)據(jù)庫中的SELECT語句邏輯執(zhí)行順序分析

    數(shù)據(jù)庫中的SELECT語句邏輯執(zhí)行順序分析

    這篇文章主要介紹了數(shù)據(jù)庫中的SELECT語句邏輯執(zhí)行順序分析,并列出了一些例子,需要的朋友可以參考下
    2014-07-07
  • Mysql 用戶權(quán)限管理實(shí)現(xiàn)

    Mysql 用戶權(quán)限管理實(shí)現(xiàn)

    MySQL 是一個(gè)多用戶數(shù)據(jù)庫,具有功能強(qiáng)大的訪問控制系統(tǒng),可以為不同用戶指定不同權(quán)限。本文就來介紹一下Mysql 用戶權(quán)限管理實(shí)現(xiàn),感興趣的可以了解一下
    2021-05-05

最新評(píng)論

宁乡县| 宾阳县| 县级市| 玛多县| 拉萨市| 教育| 通辽市| 望城县| 格尔木市| 衡阳县| 弥勒县| 台北县| 田东县| 扎赉特旗| 开化县| 沅江市| 桓台县| 阿拉善右旗| 镇平县| 滕州市| 巩留县| 保康县| 平阴县| 逊克县| 宁武县| 县级市| 瓦房店市| 潞西市| 寻乌县| 永州市| 雅安市| 沁阳市| 卓尼县| 白水县| 仁寿县| 庆安县| 峨边| 四会市| 昌图县| 娄底市| 陵川县|