内射老阿姨1区2区3区4区_久久精品人人做人人爽电影蜜月_久久国产精品亚洲77777_99精品又大又爽又粗少妇毛片

怎么做MySQL內(nèi)核深度優(yōu)化-創(chuàng)新互聯(lián)

這篇文章將為大家詳細講解有關怎么做MySQL內(nèi)核深度優(yōu)化,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。

運城ssl適用于網(wǎng)站、小程序/APP、API接口等需要進行數(shù)據(jù)傳輸應用場景,ssl證書未來市場廣闊!成為創(chuàng)新互聯(lián)的ssl證書銷售渠道,可以享受市場價格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:028-86922220(備注:SSL證書合作)期待與您的合作!

一.內(nèi)核性能的優(yōu)化

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

1.主備DB間的復制優(yōu)化

怎么做MySQL內(nèi)核深度優(yōu)化

問題分析

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

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

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

優(yōu)化方法

經(jīng)過分析,我們的優(yōu)化策略是:

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

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

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

優(yōu)化效果

怎么做MySQL內(nèi)核深度優(yōu)化

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

2.主庫事務線程和Dump線程間的優(yōu)化

怎么做MySQL內(nèi)核深度優(yōu)化

問題分析

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

優(yōu)化方法

經(jīng)過分析,我們的優(yōu)化策略是:

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

效果

怎么做MySQL內(nèi)核深度優(yōu)化

經(jīng)過測試,優(yōu)化后的內(nèi)核,不僅提升了事務提交線程的性能,在Dump線程較多的情況下,對主從復制性能有較大提升。

二.主備庫交互流程優(yōu)化

怎么做MySQL內(nèi)核深度優(yōu)化

問題分析

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

優(yōu)化方法

經(jīng)過分析,我們的優(yōu)化策略是:

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

效果

根據(jù)實際用例測試,優(yōu)化后的TPS提升為15%左右。

三.內(nèi)核功能的優(yōu)化

1. 預留運維帳號連接數(shù)配額

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

2. 主備強同步

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

四.外圍系統(tǒng)的優(yōu)化

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

關于“怎么做MySQL內(nèi)核深度優(yōu)化”這篇文章就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。

文章名稱:怎么做MySQL內(nèi)核深度優(yōu)化-創(chuàng)新互聯(lián)
分享路徑:http://m.rwnh.cn/article36/ddoesg.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供搜索引擎優(yōu)化、域名注冊定制網(wǎng)站、建站公司軟件開發(fā)、定制開發(fā)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉載內(nèi)容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)

微信小程序開發(fā)
大兴区| 林周县| 邢台县| 通辽市| 禹州市| 东宁县| 扎赉特旗| 获嘉县| 茶陵县| 山东省| 米脂县| 祥云县| 筠连县| 祥云县| 永春县| 长武县| 纳雍县| 镇宁| 石阡县| 珲春市| 米泉市| 兰西县| 长沙市| 石阡县| 邵东县| 武隆县| 波密县| 仪陇县| 封丘县| 瑞丽市| 长宁区| 普陀区| 文安县| 麻栗坡县| 房山区| 仙桃市| 宁乡县| 辽阳市| 伊吾县| 论坛| 南汇区|