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。

发布了481 篇原创文章 · 获赞 72 · 访问量 41万+

猜你喜欢

转载自blog.csdn.net/w892824196/article/details/104211093
今日推荐