亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

MySQL 5.7增強(qiáng)版Semisync Replication性能優(yōu)化

 更新時(shí)間:2015年05月29日 11:09:41   投稿:junjie  
這篇文章主要介紹了MySQL 5.7增強(qiáng)版Semisync Replication性能優(yōu)化,本文著重講解支持發(fā)送binlog和接受ack的異步化、支持在事務(wù)commit前等待ACK兩項(xiàng)內(nèi)容,需要的朋友可以參考下

一 前言

前文 介紹了5.5/5.6 版本的MySQL semi sync 基礎(chǔ)原理和配置,隨著MySQL 5.7 的發(fā)布,新版本的MySQL修復(fù)了semi sync 的一些bug 并且增強(qiáng)了功能。

支持發(fā)送binlog和接受ack的異步化;
支持在事務(wù)commit前等待ACK;
在server層判斷備庫是否要求半同步以減少Plugin鎖沖突;
解除binlog dump線程和lock_log的沖突等等。

本文重點(diǎn)分析 第1,2個(gè)改進(jìn)項(xiàng),因?yàn)樵瓉淼哪J降拇_會影響系統(tǒng)的tps,新的異步模式可以提高半同步模式下的系統(tǒng)事務(wù)處理能力。

二 優(yōu)化

1、支持發(fā)送binlog和接受ack的異步化

通過前面的介紹,我們知道Semisynchronous Replication模式下,app在主庫上提交一個(gè)事務(wù)/event,MySQL將每個(gè)事務(wù)寫入binary并且同步到到slave ,master會等待至少一個(gè)slave通知:slave 已經(jīng)接收到傳過來的events并寫入relay log,才返回給回話層 寫入成功,或者直到傳送日志發(fā)生超時(shí),系統(tǒng)自動將為異步復(fù)制模式。

整體流程的邏輯圖

5.5 版本semi sync 設(shè)計(jì)的缺點(diǎn):

    從原理以及上圖來看,舊版本的semi sync 受限于dump thread ,原因是dump thread 承擔(dān)了兩份不同且又十分頻繁的任務(wù):傳送binlog 給slave ,還需要等待slave反饋信息,而且這兩個(gè)任務(wù)是串行的,dump thread 必須等待 slave 返回之后才會傳送下一個(gè) events 事務(wù)。dump thread 已然成為整個(gè)半同步提高性能的瓶頸在高并發(fā)業(yè)務(wù)場景下,這樣的機(jī)制會影響數(shù)據(jù)庫整體的TPS .

為了解決上述問題,在5.7.4版本的semi sync 框架中,獨(dú)立出一個(gè) ack collector thread ,專門用于接收slave 的反饋信息。這樣master 上有兩個(gè)進(jìn)程獨(dú)立工作,可以同時(shí)發(fā)送binlog 到slave ,和接收slave的反饋。整體流程的邏輯圖

大體的實(shí)現(xiàn)思路是:

備庫IO線程使用TCP協(xié)議和主庫交互,讀寫socket可以同時(shí)進(jìn)行,在開啟主庫semisync時(shí),啟動一個(gè)后臺線程,使用select監(jiān)聽備庫連接socket;
dump線程不再等待備庫ACK;在ack reciver線程等待ACK時(shí),dump線程還能繼續(xù)發(fā)送下一組group commit的binlog,進(jìn)而提升TPS.

2 支持在事務(wù)commit前等待ACK;

   新版本的semi sync 增加了rpl_semi_sync_master_wait_point參數(shù) 來控制半同步模式下 主庫在返回給會話事務(wù)成功之前提交事務(wù)的方式。

該參數(shù)有兩個(gè)值:

AFTER_SYNC (默認(rèn)值):master 將每個(gè)事務(wù)寫入binlog ,傳遞到slave,并且刷新到磁盤。master等待slave 反饋接收到事務(wù)并刷新到磁盤。一旦接到slave反饋,master在主庫提交事務(wù)并且返回結(jié)果給會話。 在AFTER_SYNC模式下,所有的客戶端在同一時(shí)刻查看已經(jīng)提交的數(shù)據(jù)。假如發(fā)生主庫crash,所有在主庫上已經(jīng)提交的事務(wù)已經(jīng)同步到slave并記錄到relay log。此時(shí)切換到從庫,可以保障最小的數(shù)據(jù)損失。

AFTER_COMMIT: master 將每個(gè)事務(wù)寫入binlog ,傳遞到slave 刷新到磁盤(relay log),然后在主庫提交事務(wù)。master在提交事務(wù)后等待slave 反饋接收到事務(wù)并刷新到磁盤。一旦接到slave反饋,master將結(jié)果反饋給客戶端。
在AFTER_COMMIT模式下,如果slave 沒有應(yīng)用日志,此時(shí)master crash,系統(tǒng)failover到slave,app將發(fā)現(xiàn)數(shù)據(jù)出現(xiàn)不一致,在master提交而slave 沒有應(yīng)用。

相關(guān)文章

  • mysql連接查詢、聯(lián)合查詢、子查詢原理與用法實(shí)例詳解

    mysql連接查詢、聯(lián)合查詢、子查詢原理與用法實(shí)例詳解

    這篇文章主要介紹了mysql連接查詢、聯(lián)合查詢、子查詢原理與用法,結(jié)合實(shí)例形式詳細(xì)分析了mysql連接查詢、聯(lián)合查詢、子查詢的基本概念、功能、原理、用法及操作注意事項(xiàng),需要的朋友可以參考下
    2020-04-04
  • MySQL查詢優(yōu)化--調(diào)整內(nèi)部變量的詳解

    MySQL查詢優(yōu)化--調(diào)整內(nèi)部變量的詳解

    本篇文章是對MySQL查詢優(yōu)化中的調(diào)整內(nèi)部變量進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-06-06
  • MySQL為什么要避免大事務(wù)以及大事務(wù)解決的方法

    MySQL為什么要避免大事務(wù)以及大事務(wù)解決的方法

    這篇文章主要介紹了MySQL為什么要避免大事務(wù)以及大事務(wù)解決的方法,幫助大家更好的理解和學(xué)習(xí)MySQL,感興趣的朋友可以了解下
    2020-08-08
  • Linux/UNIX和Window平臺上安裝Mysql

    Linux/UNIX和Window平臺上安裝Mysql

    這篇文章主要為大家詳細(xì)介紹了Linux/UNIX和Window兩個(gè)系統(tǒng)上采用命令安裝Mysql的方法,感興趣的小伙伴們可以參考一下
    2016-05-05
  • MySQL 加密/壓縮函數(shù)

    MySQL 加密/壓縮函數(shù)

    在MySQL中,加密和壓縮函數(shù)返回二進(jìn)制串。對其中的許多函數(shù)而言,結(jié)果可能包含任意的字節(jié)值,如果想存儲這些結(jié)果,你應(yīng)該使用一個(gè)具有varbinary或者blob二進(jìn)制串?dāng)?shù)據(jù)類型的列,這可避免潛在的刪除尾部空白問題或者字符集轉(zhuǎn)換問題。
    2009-12-12
  • mysql啟動報(bào)錯:The?server?quit?without?updating?PID?file的幾種解決辦法匯總

    mysql啟動報(bào)錯:The?server?quit?without?updating?PID?file的幾種

    不管是在安裝還是運(yùn)行MySQL的時(shí)候,都很有可能遇到報(bào)錯,下面這篇文章主要給大家介紹了關(guān)于mysql啟動報(bào)錯:The?server?quit?without?updating?PID?file的幾種解決辦法,需要的朋友可以參考下
    2022-08-08
  • MySQL 5.7.18 免安裝版配置教程

    MySQL 5.7.18 免安裝版配置教程

    這篇文章主要為大家詳細(xì)介紹了MySQL 5.7.18 免安裝版配置教程,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-05-05
  • MySQL預(yù)編譯功能詳解

    MySQL預(yù)編譯功能詳解

    這篇文章主要為大家詳細(xì)介紹了MySQL預(yù)編譯功能的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-10-10
  • Mysql字符串字段判斷是否包含某個(gè)字符串的2種方法

    Mysql字符串字段判斷是否包含某個(gè)字符串的2種方法

    這篇文章主要介紹了Mysql字符串字段判斷是否包含某個(gè)字符串的2種方法,本文使用Like和find_in_set兩種方法實(shí)現(xiàn),需要的朋友可以參考下
    2015-01-01
  • MySQL中BIGINT數(shù)據(jù)類型如何存儲整數(shù)值

    MySQL中BIGINT數(shù)據(jù)類型如何存儲整數(shù)值

    mysql數(shù)據(jù)庫設(shè)計(jì),其中對于數(shù)據(jù)性能優(yōu)化,字段類型考慮很重要,下面這篇文章主要給大家介紹了關(guān)于MySQL中BIGINT數(shù)據(jù)類型如何存儲整數(shù)值的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-10-10

最新評論