想问一下关于两阶段提交的问题:
1 看文档中TIDB乐观锁的场景下采用两阶段提交,那么在悲观锁的场景下使用的是什么提交方式?是prewrite的时间不同的区别么一个是用户commit之前一个是用户commit之后?
2 异步提交和1PC提交的模式下对于乐观锁和悲观锁的场景的实现方式又是什么样子的呢?根据https://asktug.com/t/topic/243260 如果是在prewrite阶段成功即可以判定事务提交成功那么是不是说也是在用户发出commit之后再进行prewrite那么是不是也是乐观锁的场景呢?
有理解不对的地方还请多多包涵。
悲观事务也是2阶段提交,不过DML阶段也加锁,prewrite流程和乐观事务一致,可参考以下文档
https://docs.pingcap.com/zh/tidb/stable/pessimistic-transaction/#tidb-悲观事务模式
https://asktug.com/t/topic/274524
https://asktug.com/t/topic/273045
1 个赞
谢谢
我理解的话 是不是无论是哪种提交方式(两阶段,一阶段,异步),对于乐观锁悲观锁的场景下流程都是一样的,差别就只有加锁的时间不一样。
另外这个加锁在TIDB中是不是就可以理解为prewrite呢?
一阶段和异步不一样,会提前获取commit_ts。 prewrite 加锁同时写数据,悲观模式DML阶段加锁和Prewrite时格式不一样
https://pingcap.com/zh/blog/async-commit-principle
1 个赞
非常感谢
此话题已在最后回复的 1 分钟后被自动关闭。不再允许新回复。