91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

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

MySQL內核的深度優化方式

發布時間:2021-09-16 11:54:03 來源:億速云 閱讀:107 作者:chen 欄目:云計算

這篇文章主要講解了“MySQL內核的深度優化方式”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“MySQL內核的深度優化方式”吧!

一.內核性能的優化

由于騰訊云上的DB基本都需要跨園區災備的特性,因此CDB for MySQL的優化主要針對主從DB部署在跨園區網絡拓撲的前提下,重點去解決真實部署環境下的性能難題。經過分析和調研,我們將優化的思路歸納為:“消除冗余I/O、縮短I/O路徑和避免大鎖競爭”。以下是內核性能的部分案例:

1.主備DB間的復制優化

問題分析

如上圖所示,在原生MySQL的復制架構中,Master側通過Dump線程不斷發送Binlog事件給Slave的I/O線程,Slave的I/O線程在接受到Binlog事件后,有兩個主要的動作:

  • 寫入到Relay Log中,這個過程會和Slave SQL線程爭搶保護Relay Log的鎖。

  • 更新復制元數據(包含Master的位置等信息)。

優化方法

經過分析,我們的優化策略是:

  • Slave I/O線程和Slave SQL線程是典型的單寫單讀生產者-消費者模型,是可以做到無鎖設計的;因此實現思路就是Slave I/O線程在每次寫完數據后,原子更新Relay Log的長度信息,Slave SQL線程讀取Relay Log的時以長度信息為邊界。這樣就將原本競爭激烈的Relay Log鎖化解為無鎖;

  • 由于Binlog事件中的GTID(Global Transaction Identifier)和DB事務是一一對應的關系,所以Relay Log中的數據本身已經包含了所需要的復制元數據,所以我們可以不寫Master info文件,消除了冗余的文件I/O;

  • 于DB都是以事務為更新粒度的,因為在Relay Log文件I/O上,我們通過合并離散小I/O為事務粒度的大I/O等手段,使磁盤I/O得以大幅提升。

優化效果


如上圖所示,經過優化:左圖35.79%的鎖競爭(futex)已經被完全消除;同壓測壓力下,56.15%的文件I/O開銷被優化到19.16%,Slave I/O線程被優化為預期的I/O密集型線程。

2.主庫事務線程和Dump線程間的優化
問題分析

如上圖所示,在原生MySQL中多個事務提交線程TrxN和多個Dump線程之間會同時競爭Binlog文件資源的保護鎖,多個事務提交線程對Binlog執行寫入,多個Dump線程從Binlog文件讀取數據并發送給Slave。所有的線程之間是串行執行的!

優化方法

經過分析,我們的優化策略是:

  • 將讀寫分離開來,多個寫入的線程還是在鎖保護下串行執行,每一個寫入線程寫入完成后更新當前Binlog的長度信息,多個Dump線程以Binlog文件的長度信息為讀取邊界,多個Dump線程之間并行執行。以這種方式來讓復制拓撲中的Dump線程發送得更快!

效果

優化后的示意圖如下:

經過測試,優化后的內核,不僅提升了事務提交線程的性能,在Dump線程較多的情況下,對主從復制性能有較大提升。

二.主備庫交互流程優化

問題分析

如上圖所示,在原生MySQL中主備庫之間的數據發送和ACK回應是簡單的串行執行,在上一個事件ACK回應到達之前,不允許繼續發送下一個事件;這個行為在跨園區(RTT 2-3ms)的情況性能非常差,而且也不能很好地利用帶寬優勢。

優化方法

經過分析,我們的優化策略是:

  • 將發送和ACK回應的接收獨立到不同的線程中,由于發送和接收都是基于TCP流的傳輸,所以時序性是有保障的;這樣發送線程可以在未收ACK之前繼續發送,接受線程收到ACK后喚醒等待的線程執行相應的任務。

效果

根據實際用例測試,優化后的TPS提升為15%左右。

三.內核功能的優化

1. 預留運維帳號連接數配額

在騰訊云上,不時遇到用戶APP異常或者BUG從而占滿DB的最大連接限制,這是CDB OSS帳號無法登錄以進行緊急的運維操作。針對這個現狀,我們在MySQL內核單獨開辟了一個可配置的連接數配額,即便在上述場景下,運維帳號仍然可以連接到DB進行緊急的運維操作。極大地降低了異常情況下DB無政府狀態的風險。該帳號僅有數據庫運維管理權限,無法獲取用戶數據,也保證了用戶數據的安全性。

2. 主備強同步

針對一些應用對數據的一致性要求非常高,CDB在MySQL原生半同步的基礎上進行了深度優化,確保一個事務在主庫上提交之前一定已經復制到至少一個備庫上。確保主庫宕機時數據的一致性。

四.外圍系統的優化

除了以上提到的MySQL內核側的部分優化,我們也在外圍OSS平臺進行了多處優化。例如使用異步MySQL ping協議實現大量實例的監控、通過分布式技術來加固原有系統的HA/服務發現和自動擴容等功能、在數據安全/故障切換和快速恢復方面也進行了多處優化。

感謝各位的閱讀,以上就是“MySQL內核的深度優化方式”的內容了,經過本文的學習后,相信大家對MySQL內核的深度優化方式這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!

向AI問一下細節

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

AI

双城市| 洪雅县| 波密县| 郓城县| 元谋县| 嘉义县| 寻甸| 镇远县| 钟祥市| 木兰县| 墨玉县| 纳雍县| 潜江市| 陈巴尔虎旗| 安国市| 定陶县| 邻水| 循化| 黄冈市| 家居| 龙岩市| 麟游县| 特克斯县| 朝阳区| 西乌珠穆沁旗| 巴中市| 望城县| 芦山县| 吉首市| 长垣县| 锡林浩特市| 炎陵县| 嘉善县| 崇礼县| 黔江区| 光泽县| 大石桥市| 安康市| 莱州市| 工布江达县| 修武县|