TIKV Percolator 事务模型,事务 keys prewrite 全部成功后,tikv 和 tidb 节点挂了,这个事务后续还会被 commit 吗?

我们知道,Percolator 事务模型中,只要 primary key 提交 commit 成功,即使事务相关的各个节点都挂了,其他 key 后续都可以被提交,不影响事务的。

但是如果 primary key 在提交 commit 前 tikv 挂了,相应的 tidb 节点也挂了,这个事务所有的 key lock ttl 都未过期。

这个时候,其他事务的 resolve lock 过程,会帮忙把这个事务帮忙提交一下吗?还是只能选择 lock ttl 超时回滚了。

在 Async Commit 事务中,由于 primary key lock 含有 secondary keys 的指针,所以 resolve lock 应该是可以帮忙提交 commit 的吧?

要回滚得,第二阶段是有commit_ts要获得的

这就是事务更新完了,但是没提交的状态,我的理解是只要执行这个事务的tidb 节点挂了,或者会话挂了,都会导致回滚,因为这个事务本身是没有成功提交的,并且上述情况导致永远无法提交。如果只是tikv挂了,应该是会话报错,事务回滚。

需要通过故障处理和恢复机制来确保事务最终能够被正确处理

1 个赞

向大全们学习。

此话题已在最后回复的 60 天后被自动关闭。不再允许新回复。