2023-11-14 mysql-LOGICAL_CLOCK 并行复制原理及实现分析

MySQL 5.7引入Logical Clock并行复制方案,解决了基于Schema的并行复制存在的延迟问题。本文详细介绍了Commit-Parent-Based和Lock-Based两种模式的原理,分析了其在保证因果一致性方面的表现,并提及slave_preserve_commit_order选项如何实现Sequential Consistency。此外,文章还探讨了Logical Clock的局限性,如锁间隔实际实现较窄,限制了部分事务的并发执行。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

简介:

在MySQL5.7 引入基于Logical clock的并行复制方案前,MySQL使用基于Schema的并行复制,使不同db下的DML操作可以在备库并发回放。在优化后,可以做到不同表table下并发。但是如果业务在Master端高并发写入一个库(或者优化后的表),那么slave端就会出现较大的延迟。基于schema的并行复制,Slave作为只读实例提供读取功能时候可以保证同schema下事务的因果序(Causal Consistency,本文讨论Consistency的时候均假设Slave端为只读),而无法保证不同schema间的。例如当业务关注事务执行先后顺序时候,在Master端db1写入T1,收到T1返回后,才在db2执行T2。但在Slave端可能先读取到T2的数据,才读取到T1的数据。

MySQL 5.7的LOGICAL CLOCK并行复制,解除了schema的限制,使得在主库对一个db或一张表并发执行的事务到slave端也可以并行执行。Logical Clock并行复制的实现,最初是Commit-Parent-Based方式,同一个commit parent的事务可以并发执行。但这种方式会存在可以保证没有冲突的事务不可以并发,事务一定要等到前一个commit parent group的事务全部回放完才能执行。后面优化为Lock-Based方式,做到只要事务和当前执行事务的Lock Interval都存在重叠,即保

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

悟世者

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值