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並行複製-原始碼理解記錄MySql並行原始碼
- MySQL Case-MySQL8.0真正的並行複製writesetMySql並行
- MySQL Case-MySQL5.7無效的並行複製MySql並行
- MySQL主從複製原理MySql
- MySQL(13)---MYSQL主從複製原理MySql
- MySQL並行複製延時時間不準確MySql並行
- mysql 複製原理與實踐MySql
- MySQL 8 複製(七)——組複製基本原理MySql
- Mysql主從複製原理及搭建MySql
- MySQL 主從複製原理不再難MySql
- MySQL 主從複製之多執行緒複製MySql執行緒
- MySQL案例-並行複製亂序提交引起的同步異常MySql並行
- MySQL 傳統複製與 GTID 複製原理及操作詳解MySql
- mysql的主從複製 原理講解MySql
- 深入挖崛:mysql主從複製原理MySql
- mysql 5.7 主從複製搭建及原理MySql
- 深入瞭解MySQL主從複製的原理MySql
- MySQL複製MySql
- MySQL全面瓦解27:主從複製(原理 + 實踐)MySql
- mysql複製--主從複製配置MySql
- MySQL 主從複製的執行流程MySql
- 例項解讀:MySQL並行複製如何解決特定的主從問題?MySql並行
- MySQL 8 複製(三)——延遲複製與部分複製MySql
- MySQL主從複製之GTID複製MySql
- MySQL 8 複製(一)——非同步複製MySql非同步
- MySQL 8 複製(二)——半同步複製MySql
- MySQL 8 複製(四)——GTID與複製MySql
- MySQL 8 複製(五)——配置GTID複製MySql
- 五分鐘!搞懂 MySQL主從複製原理,牛批!MySql
- MySQL 複製全解析 Part 11 使用xtrabackup建立MySQL複製MySql
- MySQL主從複製之半同步複製MySql
- MySQL主從複製之非同步複製MySql非同步
- 第16節:基於WRITESET的並行複製方式並行