MySQL binlog_transaction_dependency_tracking=commit_order和slave_preserve_commit_order的区别

binlog_transaction_dependency_tracking是设在主库,可以取commit_order,writeset,writeset_session,主要是控制binlog文件中last_committed的计算方式:
commit_order即group commit,同在prepare阶段的事务,在binlog中last_committed数值一样,传到从库之后可以并行执行;
writeset,会对事务处理的行数据哈希出一个writeset值,放到一个哈希表里,如果两个事务先后提交,但是处理的行数据没有冲突,即wirteset不一样,就可以有同样的last_committed,在从库可以并行执行;
writeset_session,比writeset多了一个约束,同一个session的事务,在binlog里保留先后顺序,也就是last_committed按先后顺序递增。

slave_preserve_commit_order是设在从库,控制从库并行reply时事务提交的顺序。

感觉对于writeset,会有问题。先后事务处理不同的行虽然是没有冲突,但是如果后面的事务是基于前面事务修改后的数据呢?必须要是row格式的binlog。

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值