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

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

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

瀏覽:26日期: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)運(yùn)而生了。 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色| 亚洲精一区二区三区| 午夜视频一区二区在线观看| 亚洲精品四区| 国产精品中文字幕亚洲欧美| 精品一区91| 欧美成人综合| 日本伊人久久| 国产精品福利在线观看播放| 国产精品视频一区二区三区综合| 精品午夜av| 激情久久久久久久| 亚洲精选成人| 久久三级毛片| 午夜精品网站| 国产免费久久| 99久久九九| 亚洲欧美网站在线观看| 麻豆国产欧美一区二区三区 | 国产乱人伦丫前精品视频| 91在线成人| 91青青国产在线观看精品| 日韩成人精品一区| 精品一区欧美| 日韩精品久久久久久| 欧美黑人巨大videos精品| 欧美日韩在线观看视频小说| 国内精品99| 国产亚洲观看| 中文另类视频| 免播放器亚洲| 精品免费视频| 麻豆成人在线| 久久女人天堂| 视频一区二区中文字幕| 久久久久久久久成人| 中日韩男男gay无套| 亚洲最大av| 久久天堂成人| 免费看一区二区三区| 蜜桃av一区| 蜜桃av.网站在线观看| 日韩精品福利一区二区三区| 蜜桃精品在线| 久久av免费| 蜜臀精品久久久久久蜜臀| 精品国内亚洲2022精品成人| 黑丝一区二区三区| 国产一区二区三区亚洲| 免费国产亚洲视频| 欧美xxxx中国| 日韩高清电影一区| 国内自拍视频一区二区三区| 日韩中文字幕区一区有砖一区| 麻豆国产欧美一区二区三区| 在线综合视频| 亚洲性色av| 欧美成人精品一级| 亚洲精品大片| 国产精品毛片| 激情欧美一区二区三区| 四虎国产精品免费观看| 国产欧美亚洲精品a| 免播放器亚洲一区| 偷拍欧美精品| 亚洲小说欧美另类婷婷| 国产精品久久久久久久免费观看| 美日韩精品视频| 久久久夜精品| 黄色aa久久| 国产精品s色| 青青草国产成人99久久| 首页国产欧美久久| 午夜久久福利| 伊人久久大香线蕉av不卡| 综合日韩av| 精品高清久久| 国产精品久一| 国产精品啊v在线| 欧美在线精品一区| 天堂精品久久久久| 亚洲一区二区三区四区电影| 久久精品青草| 亚洲福利国产| 国产伊人精品| 欧美日韩国产免费观看| 五月婷婷六月综合| 在线一区免费| 亚洲免费高清| 噜噜噜躁狠狠躁狠狠精品视频| 99在线观看免费视频精品观看| 免费国产自久久久久三四区久久| 99久精品视频在线观看视频| 日韩不卡视频在线观看| 亚洲va在线| 黄色成人在线网址| 美女尤物久久精品| 亚洲欧洲日本mm| 快she精品国产999| 日本亚洲三级在线| 国产欧美二区| 久久97视频| 三上悠亚国产精品一区二区三区| 久久激情中文| 日韩视频二区| 久久亚洲色图| 日韩高清在线不卡| 久久av超碰| 天堂日韩电影| 亚洲综合精品四区| 日韩福利视频网| 国产一区二区三区四区五区| 国产香蕉精品| 国产在线观看www| 欧美不卡视频| 一本一本久久| 日本午夜精品一区二区三区电影 | 日本不卡不码高清免费观看| 日韩不卡一区二区| 国产精品扒开腿做爽爽爽软件| 国产成人精品三级高清久久91| av中文字幕在线观看第一页| 91精品婷婷色在线观看| 老牛国产精品一区的观看方式| 影院欧美亚洲| 911精品国产| 91视频一区| 欧美午夜不卡| 欧美日韩视频免费看| 欧美xxxx中国| 亚洲欧美成人综合| 国产精品日韩精品在线播放| 亚洲伊人av| 亚洲三级国产| 欧美亚洲日本精品| 一区二区三区四区在线观看国产日韩 | 久久精品亚洲欧美日韩精品中文字幕| 91精品二区| 国产精品一国产精品k频道56| 国产在线观看www| 蜜臀精品久久久久久蜜臀 | 久久精品凹凸全集| 日韩黄色大片网站| 婷婷视频一区二区三区| 成人一区而且| 日韩影片在线观看| 日韩成人高清| 日韩av一区二区三区四区| 久久99精品久久久久久园产越南| 92国产精品| 久久国产人妖系列| 国产韩日影视精品| 久久天堂影院| 蜜桃一区二区三区在线| 成午夜精品一区二区三区软件| 日韩专区欧美专区| 韩国精品主播一区二区在线观看| 91精品尤物| 欧美精品九九| 神马久久午夜| 国产精品一站二站| 久久亚洲风情| 1024精品一区二区三区| 欧美精品三级在线| 亚洲一卡久久| 在线观看精品| 精品国产乱码久久久久久1区2匹| 老牛国产精品一区的观看方式| 欧美13videosex性极品| 国产欧美日韩精品一区二区三区| 国产一区二区精品| 久久久久久久久99精品大| 六月丁香综合在线视频| 婷婷亚洲精品| 日韩午夜高潮| 久久国产日本精品| 国产91在线播放精品| 国产精品免费不| 日韩成人午夜精品| 久久黄色影院| www在线观看黄色| 国产精品综合| 91国内精品| 日韩一区二区三区高清在线观看| 免费视频国产一区| 久久久久久久久丰满| 成人美女视频| 黄色在线观看www| 精品免费av| 久久精品国产成人一区二区三区| 日本不卡在线视频| 天海翼精品一区二区三区| 国产精品日韩| 不卡视频在线| 欧美成人精品三级网站| 福利一区在线| 欧美激情在线精品一区二区三区|