协调者不用做事务提交,所以在prepare阶段的时候直接就进入了commit阶段了
2 个赞
也就是没有1,只有2?
1 个赞
2是有日志写入的,不过用户感知到的日志(写入)延迟只有1,是因为OB对两阶段提交做了优化,prepare阶段完成就认为事务已经提交成功了,这时候用户就已经收到commit ok的返回信息了,后面的commit阶段和clear阶段对用户是无感知的。
4 个赞
学习了 666
旭辉老师,这里我想追问一个问题:
为什么向client发送commit ok要在第二个rpc返回之后呢,如您所说此时其实参与者也没写commit log,对于参与者来说,在返回pre commit ok前后的持久化状态应该是没区别的。为什么不在受到所有参与者返回prepare ok之后就直接向client返回事务提交呢?
另外还有两个细节问题:
1为什么多了协调者向所有参与者统一发送clear req的步骤,参与者commit的时候自动clear不就可以了。
2sql查询事务状态的时候,对应事务何时是precommit(收到第二次rpc返回后?此时client是不是已经认为commit了?),何时是commit(收到所有的commit ok后还是clear后?)