PiTR一致性的疑问

我理解楼主的意思是担心即使分布式事务拿到了相同的 commitTs ,但是 primary key 先持久化 commitTs 后就认为事务提交了,其他 key 是一个异步的过程,可能会导致 PiTR miss 掉一部分数据。

这是不会的。因为其他 key 没有持久化 commitTs 之前,其他 key 的记录上会有 startTs 的 lock 记录,PiTR 遇到这种 lock 记录会根据事务状态推进或者删除锁,只有等待锁处理之后才会推进 local checkpointTs。

也就是说即使其他节点的 local checkpointTs 已经推进到了某个 commitTs 10,但是只要还存在一个节点的 commitTs 10 还没有提交,那这个节点的 local checkpointTs 就是 9, 这个时候 global checkpointTs 还是 9, 没法保证 commitTs 10 的事物能完全恢复。

1 个赞