mysql 並行複製原理
1、binlog_transaction_dependency_tracking =commit_order
last_committed表示事務提交的時候,上次事務提交的編號,如果事務具有相同的last_committed,表示這些事務都在一組內,可以進行並行的回放。
在commit_order模式下, 如果事務具有相同的last_committed,一定是在不同執行緒執行的;反之,同一個執行緒執行的事務,last_committed必然不同。
一個組提交的事務都是可以並行回放 ,因為這些事務都已進入到事務的prepare階段,則說明事務之間沒有任何衝突(否則就不可能提交)。
2、 binlog_transaction_dependency_tracking =writeset
可以看到在
write_set模式下,各個insert是可以並行執行的,所以它們被分到了同個組(last_committed相同)。
簡單來說,WriteSet並行複製的思想是:
不同事務的不同記錄不重疊,則都可在從機上並行回放,可以看到並行的力度從組提交細化為記錄級。
所謂不同的記錄,在MySQL中用WriteSet物件來記錄每行記錄,從原始碼來看WriteSet就是每條記錄hash後的值(必須開啟ROW格式的二進位制日誌),具體演算法如下:
WriteSet=hash(index_name | db_name | db_name_length | table_name | table_name_length | value | value_length
產生的WriteSet物件會插入到WriteSet雜湊表,雜湊表的大小由引數binlog_transaction_dependency_history_size設定,預設25000。WriteSet雜湊表的型別為std::map<uint64,int64>,儲存每條記錄的WriteSet值和對應的sequence_number。
當事務每次提交時,會計算修改的每個行記錄的WriteSet值,然後查詢雜湊表中是否已經存在有同樣的WriteSet,若無,WriteSet插入到雜湊表,寫入二進位制日誌的last_committed值不變。若有,則last_committed值更新為sequnce_number。
last_committed和sequence_number代表的就是所謂的LOGICAL_CLOCK
WriteSet的效能比Commit_Order要快5~6倍,效果非常明顯。如果是有延遲要追的,WriteSet毫無疑問是勝者。Commit_Order的瓶頸依然是需要主有足夠的併發度,實際生產上確很難達到,除非是業務高峰期。
3、binlog_transaction_dependency_tracking =writeset_session
WRITESET_SESSION,是在 WRITESET 的基礎上多了一個約束,即在主庫上同一個執行緒先後執行的兩個事務,在備庫執行的時候,要保證相同的先後順序。
參考文件:
https://blog.csdn.net/weixin_33945512/article/details/113594838
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/28916011/viewspace-2849106/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- MySQL並行複製(MTS)原理(完整版)MySql並行
- MySQL 5.7並行複製MySql並行
- MySQL 5.7 並行複製MySql並行
- [Mysql]Mysql5.7並行複製MySql並行
- MySQL 並行複製方案演進歷史及原理分析MySql並行
- mysql 5.7開啟並行複製MySql並行
- 【Mysql】mysql5.7新特性之-並行複製實現原理與調優MySql並行
- 網易影片雲:MySQL 5.7 並行複製實現原理與調優MySql並行
- MYSQL並行複製(parallel replication部署篇)MySql並行Parallel
- mysql複製原理圖MySql
- MySQL並行複製-原始碼理解記錄MySql並行原始碼
- MySQL 5.6並行複製的架構圖MySql並行架構
- MySQL Case-MySQL5.7無效的並行複製MySql並行
- MySQL Case-MySQL8.0真正的並行複製writesetMySql並行
- MySQL主從複製原理MySql
- MySQL(13)---MYSQL主從複製原理MySql
- mysql replication /mysql 主從複製原理MySql
- MySQL並行複製延時時間不準確MySql並行
- MySQL · 功能分析 · 5.6 並行複製實現分析MySql並行
- mysql 複製原理與實踐MySql
- MySQL5.6複製原理圖MySql
- Mysql的複製原理以及流程MySql
- MySQL 8 複製(七)——組複製基本原理MySql
- Mysql主從複製原理及搭建MySql
- MySQL 主從複製原理不再難MySql
- mysql主從複製原理及配置MySql
- MySQL 主從複製之多執行緒複製MySql執行緒
- 各版本 MySQL 並行複製的實現及優缺點MySql並行
- MySQL案例-並行複製亂序提交引起的同步異常MySql並行
- 深入挖崛:mysql主從複製原理MySql
- mysql 5.7 主從複製搭建及原理MySql
- mysql的主從複製 原理講解MySql
- MySQL 主從複製的原理和配置MySql
- MySQL 傳統複製與 GTID 複製原理及操作詳解MySql
- 【MySQL】5.6/5.7並行複製bug導致的故障 ERROR 1755/1756MySql並行Error
- MySQL併發複製系列二:多執行緒複製MySql執行緒
- mysql之 MySQL 主從基於position複製原理概述MySql
- 深入瞭解MySQL主從複製的原理MySql