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的瓶颈依然是需要主有足够的并发度,实际生产上确很难达到,除非是业务高峰期。 回放时和基于COMMIT_ORDER的并行复制一样,具有相同的last_committed值可以并行回放,同一条记录回放,last_committed值必然不同,必须等待之前的一条记录回放完成后才能执行。所以透过现象看本质基于Write Set的方式只是在以前的方式上对last_committed做了更进一步的处理,来达到最大的并发效果。 3、binlog_transaction_dependency_tracking =writeset_session
WRITESET_SESSION,是在 WRITESET 的基础上多了一个约束,即在主库上同一个线程先后执行的两个事务,在备库执行的时候,要保证相同的先后顺序。
参考文档:
https://www.cnblogs.com/VicLiu/p/14653400.html
https://blog.csdn.net/weixin_33945512/article/details/113594838
编辑推荐:
- mysql 并行复制原理03-01
- 阿里云数据管理DMS的无锁变更功能主要原理和适用场景介绍03-01
- 基于DataX的数据同步(上)-DataX介绍以及安装03-01
- MySQL 中 blob 和 text 数据类型详解03-01
- 基于DataX的数据同步(下)-应用DataX进行数据同步03-01
- MySQL show processlist故障处理03-01
- CentOS 系统手动部署 MySQL 数据库03-01
- MySQL升级过程中的一些心得-203-01
下一篇:
相关推荐
-
雷神推出 MIX PRO II 迷你主机:基于 Ultra 200H,玻璃上盖 + ARGB 灯效
2 月 9 日消息,雷神 (THUNDEROBOT) 现已宣布推出基于英
-
制造商 Musnap 推出彩色墨水屏电纸书 Ocean C:支持手写笔、第三方安卓应用
2 月 10 日消息,制造商 Musnap 现已在海外推出一款 Oce
热文推荐
- mysql 并行复制原理
mysql 并行复制原理
26-03-01 - 基于DataX的数据同步(上)-DataX介绍以及安装
基于DataX的数据同步(上)-DataX介绍以及安装
26-03-01 - 基于DataX的数据同步(下)-应用DataX进行数据同步
基于DataX的数据同步(下)-应用DataX进行数据同步
26-03-01 - CentOS 系统手动部署 MySQL 数据库
CentOS 系统手动部署 MySQL 数据库
26-03-01 - MySQL升级过程中的一些心得-2
MySQL升级过程中的一些心得-2
26-03-01 - MySQL一次没有报错的关闭
MySQL一次没有报错的关闭
26-03-01 - MySQL Case-max_allowed_packet过小是否会截取sql文本
- 2021年vivo互联网技术最受欢迎文章TOP25
2021年vivo互联网技术最受欢迎文章TOP25
26-03-01 - 前端开发MySQL 数据库之数据引擎
前端开发MySQL 数据库之数据引擎
26-03-01 - MySQL8升级遇到的各式各样问题
MySQL8升级遇到的各式各样问题
26-03-01
