中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

GaussDB for MySQL性能優化的示例分析

發布時間:2021-05-18 14:53:18 來源:億速云 閱讀:188 作者:小新 欄目:開發技術

小編給大家分享一下GaussDB for MySQL性能優化的示例分析,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

背景

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

GaussDB for MySQL性能優化的示例分析

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

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

靈感來源于生活

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

現在的快遞配送,一般一個快遞員會負責一片區域,快遞剛開始興起時,數量不多,那么一個快遞員基本上可以在規定時間內完成配送。

GaussDB for MySQL性能優化的示例分析

但是,隨著快遞數量越來越多,一個快遞員要在一個小區配送很長的時間,才能到下一個小區,常常導致了快遞員無法準時的配送。在這個問題的催動下,隨后,一個新的行業開始出現 – 快遞驛站。

GaussDB for MySQL性能優化的示例分析

快遞的優化原理

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

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

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

分析

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

GaussDB for MySQL性能優化的示例分析

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

GaussDB(for MySQL)的優化

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

GaussDB for MySQL性能優化的示例分析

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

實際測試

GaussDB for MySQL性能優化的示例分析

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

以上是“GaussDB for MySQL性能優化的示例分析”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

绿春县| 安龙县| 汤原县| 安康市| 湘西| 宽城| 平舆县| 连江县| 新竹县| 冕宁县| 涟水县| 呼和浩特市| 保靖县| 铁力市| 房山区| 马尔康县| 丰镇市| 隆回县| 巴彦淖尔市| 青铜峡市| 甘南县| 衡阳县| 蒲江县| 连南| 承德市| 固安县| 耿马| 东丰县| 木兰县| 饶河县| 新竹市| 堆龙德庆县| 普洱| 青神县| 闽清县| 黄骅市| 于田县| 将乐县| 吉林市| 云浮市| 龙井市|