日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術(shù)文章
文章詳情頁

MySQL并行復(fù)制的深入淺出

瀏覽:29日期:2023-10-16 12:55:14
一、并行復(fù)制的背景 首先,為什么會有并行復(fù)制這個概念呢?

1.DBA都應(yīng)該知道,MySQL的復(fù)制是基于binlog的。 2.MySQL復(fù)制包括兩部分,IO線程 和 SQL線程。 3.IO線程主要是用于拉取接收Master傳遞過來的binlog,并將其寫入到relay log 4.SQL線程主要負(fù)責(zé)解析relay log,并應(yīng)用到slave中 5.不管怎么說,IO和SQL線程都是單線程的,然后master卻是多線程的,所以難免會有延遲,為了解決這個問題,多線程應(yīng)運而生了。 6.IO多線程? 6.1 IO沒必要多線程,因為IO線程并不是瓶頸啊7.SQL多線程?7.1 沒錯,目前最新的5.6,5.7,8.0 都是在SQL線程上實現(xiàn)了多線程,來提升slave的并發(fā)度接下來,我們就來一窺MySQL在并行復(fù)制上的努力和成果吧 二、重點

是否能夠并行,關(guān)鍵在于多事務(wù)之間是否有鎖沖突,這是關(guān)鍵。 下面的并行復(fù)制原理就是在看如何讓避免鎖沖突

三、MySQL5.6 基于schema的并行復(fù)制

slave-parallel-type=DATABASE(不同庫的事務(wù),沒有鎖沖突)

之前說過,并行復(fù)制的目的就是要讓slave盡可能的多線程跑起來,當(dāng)然基于庫級別的多線程也是一種方式(不同庫的事務(wù),沒有鎖沖突)

先說說優(yōu)點: 實現(xiàn)相對來說簡單,對用戶來說使用起來也簡單

再說說缺點: 由于是基于庫的,那么并行的粒度非常粗,現(xiàn)在很多公司的架構(gòu)是一庫一實例,針對這樣的架構(gòu),5.6的并行復(fù)制無能為力。當(dāng)然還有就是主從事務(wù)的先后順序,對于5.6也是個大問題

話不多說,來張圖好了

MySQL并行復(fù)制的深入淺出

四、MySQL5.7 基于group commit的并行復(fù)制

slave-parallel-type=LOGICAL_CLOCK : Commit-Parent-Based模式(同一組的事務(wù)[last-commit相同],沒有鎖沖突. 同一組,肯定沒有沖突,否則沒辦法成為同一組)

slave-parallel-type=LOGICAL_CLOCK : Lock-Based模式(即便不是同一組的事務(wù),只要事務(wù)之間沒有鎖沖突[prepare階段],就可以并發(fā)。 不在同一組,只要N個事務(wù)prepare階段可以重疊,說明沒有鎖沖突)

group commit,之前的文章有詳細(xì)描述,這里不多解釋。MySQL5.7在組提交的時候,還為每一組的事務(wù)打上了標(biāo)記,現(xiàn)在想想就是為了方便進(jìn)行MTS吧。

我們先看一組binlog

last_committed=0 sequence_number=1last_committed=1 sequence_number=2last_committed=2 sequence_number=3last_committed=3 sequence_number=4last_committed=4 sequence_number=5last_committed=4 sequence_number=6last_committed=4 sequence_number=7last_committed=6 sequence_number=8last_committed=6 sequence_number=9last_committed=9 sequence_number=10 4.1 Commit-Parent-Based模式

MySQL并行復(fù)制的深入淺出

4.2 Lock-Based模式

MySQL并行復(fù)制的深入淺出

五、MySQL8.0 基于write-set的并行復(fù)制

基于主鍵的沖突檢測(binlog_transaction_depandency_tracking = COMMIT_ORDERE|WRITESET|WRITESET_SESSION, 修改的row的主鍵或非空唯一鍵沒有沖突,即可并行)

5.7.22 也支持了 write-set 機(jī)制

事務(wù)依賴關(guān)系:binlog_transaction_depandency_tracking = COMMIT_ORDERE|WRITESET|WRITESET_SESSION

COMMIT_ORDERE: 繼續(xù)基于組提交方式WRITESET: 基于寫集合決定事務(wù)依賴WRITESET_SESSION: 基于寫集合,但是同一個session中的事務(wù)不會有相同的last_committed 事務(wù)檢測算法:transaction_write_set_extraction = OFF| XXHASH64 | MURMUR32

MySQL會有一個變量來存儲已經(jīng)提交的事務(wù)HASH值,所有已經(jīng)提交的事務(wù)所修改的主鍵(或唯一鍵)的值經(jīng)過hash后都會與那個變量的集合進(jìn)行對比,來判斷改行是否與其沖突,并以此來確定依賴關(guān)系

這里說的變量,可以通過這個設(shè)置大?。?binlog_transaction_dependency_history_size

這樣的粒度,就到了 row級別了,此時并行的粒度更加精細(xì),并行的速度會更快,某些情況下,說slave的并行度超越master也不為過(master是單線程的寫,slave也可以并行回放)

六、如何讓slave的并行復(fù)制和master的事務(wù)執(zhí)行的順序一致呢

5.7.19 之后,可以通過設(shè)置 slave_preserve_commit_order = 1

官方解釋: For multithreaded slaves, enabling this variable ensures that transactions are externalized on the slave in the same order as they appear in the slave’s relay log. Setting this variable has no effect on slaves for which multithreading is not enabled. All replication threads (for all replication channels if you are using multiple replication channels) must be stopped before changing this variable. --log-bin and --log-slave-updates must be enabled on the slave.In addition --slave-parallel-type must be set to LOGICAL_CLOCK.Once a multithreaded slave has been started, transactions can begin to execute in parallel. With slave_preserve_commit_order enabled, the executing thread waits until all previous transactions are committed before committing. While the slave thread is waiting for other workers to commit their transactions it reports its status as Waiting for preceding transaction to commit.大致實現(xiàn)原理就是:excecution階段可以并行執(zhí)行,binlog flush的時候,按順序進(jìn)行。 引擎層提交的時候,根據(jù)binlog_order_commit也是排隊順序完成 換句話說,如果設(shè)置了這個參數(shù),master是怎么并行的,slave就怎么辦并行

來自:http://keithlan.github.io/2018/07/31/mysql_mts_detail/

標(biāo)簽: MySQL 數(shù)據(jù)庫
相關(guān)文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
最新日韩av| 麻豆精品av| 久久av电影| 国产一区二区三区91| 中文字幕一区二区av| 亚洲一区二区三区四区五区午夜| 在线一区免费观看| 亚洲爱爱视频| 日韩视频一区| 日韩和欧美一区二区| 亚洲欧美综合| 亚洲一级影院| 午夜在线视频观看日韩17c| 日韩亚洲精品在线| 色综合视频一区二区三区日韩| 久久国产欧美日韩精品| 在线看片日韩| 日韩高清电影一区| 欧美国产美女| 亚洲综合另类| 久草精品视频| 激情婷婷欧美| 欧美视频久久| 麻豆中文一区二区| 日韩免费av| 麻豆中文一区二区| 九九精品调教| 国产亚洲一区二区三区不卡| 国产一区二区三区91| 99pao成人国产永久免费视频| 亚洲综合五月| 亚洲免费高清| 蜜桃视频在线网站| 国产欧美一区二区精品久久久 | 欧美高清一区| 久久国产中文字幕| 国产精品三级| 视频一区二区三区中文字幕| 精品美女在线视频| 亚洲精品在线国产| 99tv成人| 国产精品成人3p一区二区三区| 色婷婷综合网| 一本综合精品| 亚洲精品在线观看91| 精品国产a一区二区三区v免费| 石原莉奈在线亚洲三区| 日本不卡视频在线| 九色精品91| 色婷婷久久久| 日韩精品2区| 六月丁香综合在线视频| 91精品丝袜国产高跟在线| 婷婷综合国产| 亚洲免费网址| 亚洲人成亚洲精品| 蜜桃视频一区二区三区| 国精品一区二区| 久久精品三级| 成人国产精品一区二区网站| 免费一级片91| 在线日韩成人| 亚洲最新av| 香蕉久久久久久| 国产精品婷婷| 久久成人国产| 欧美~级网站不卡| 亚洲综合二区| 91精品国产自产精品男人的天堂| 麻豆亚洲精品| 日韩视频在线一区二区三区 | 国产精品免费99久久久| 亚州av乱码久久精品蜜桃| 欧美成人亚洲| 亚洲欧美日本日韩| 日本午夜精品久久久久| 鲁大师精品99久久久| 国产高潮在线| 在线视频精品| 欧美三区不卡| 国产在线看片免费视频在线观看| 精品美女在线视频| 精品一区二区三区中文字幕| 色在线视频观看| 一本一道久久a久久精品蜜桃| 亚洲ww精品| 婷婷综合网站| 免费一级欧美片在线观看网站| 成人日韩在线| 999在线观看精品免费不卡网站| 国产午夜一区| 欧美一级二级视频| 高清久久一区| 久久国产高清| 国产亚洲高清一区| 伊人久久成人| 欧美国产极品| 亚洲一区二区三区在线免费| 久久一区视频| 中文在线а√在线8| 国产综合色区在线观看| 欧美日韩一区二区三区不卡视频| 69堂免费精品视频在线播放| 日本a级不卡| 米奇777超碰欧美日韩亚洲| 免费观看在线综合| 欧美亚洲tv| 老鸭窝毛片一区二区三区| 久久99影视| 亚洲区第一页| 亚洲二区三区不卡| 精品三级在线| 国产精品久久久亚洲一区| 2023国产精品久久久精品双| 美女久久99| 男人的天堂亚洲一区| 国内精品麻豆美女在线播放视频| 视频在线观看一区| 国产毛片精品久久| 亚洲精品四区| 国产午夜精品一区二区三区欧美| 日韩黄色大片网站| 国产精品一区二区精品| 91欧美极品| 国产精品一区二区三区www| 国产精品日韩| 视频一区在线播放| 免费人成在线不卡| 老司机久久99久久精品播放免费| 国产黄色一区| 日韩一二三区在线观看| 欧美日韩精品一本二本三本| 久久在线免费| 久久久久久久久久久9不雅视频| 成人国产精品一区二区网站| 亚洲精品日韩久久| 日本久久二区| 青青草伊人久久| 黄色在线一区| 蜜臀av在线播放一区二区三区| 亚洲欧美日韩精品一区二区| 亚洲天堂一区二区| 色综合www| 欧美1区免费| 免费av一区二区三区四区| 男女激情视频一区| 日韩精品亚洲一区二区三区免费| 日韩精品免费视频一区二区三区 | 日韩1区2区3区| 亚洲性色视频| aa国产精品| 日韩精品亚洲专区在线观看| 久久影视三级福利片| 超碰超碰人人人人精品| 欧美日韩在线二区| 视频一区二区三区在线| 天堂久久av| 欧美极品一区二区三区| 亚洲精品97| 日韩激情网站| 久久gogo国模啪啪裸体| 美女福利一区二区三区| 亚洲欧美网站| 丝袜美腿亚洲色图| 国产极品久久久久久久久波多结野| 国产高清视频一区二区| 国产一区不卡| 日韩有吗在线观看| 在线亚洲成人| 国产精品尤物| 中文字幕av亚洲精品一部二部 | 国产精品v一区二区三区| 亚洲综合五月| 狠狠色狠狠色综合日日tαg| 日本伊人午夜精品| 欧美天堂视频| 国产精品xxx在线观看| 国产精品呻吟| 深夜视频一区二区| 日本91福利区| 亚洲一区二区三区四区五区午夜 | 影音先锋久久| 亚洲精品亚洲人成在线观看| 亚洲不卡系列| 91视频久久| 国产欧美日韩在线观看视频| 欧美成人久久| 久久免费大视频| 高清不卡亚洲| 国产精品久久久一区二区| 中文字幕乱码亚洲无线精品一区| 精品一区av| 在线国产一区二区| 亚洲一级高清| 久久这里只有| 国产欧美三级| 欧美国产中文高清| 麻豆极品一区二区三区| 麻豆精品在线观看| 国产黄色一区|