5.3 事务提交
传统的事务两阶段提交,协调者也会写日志持久化状态,先进行 prepare 阶段,再进行 commit 阶段,当参与者全部返回 commit ok 之后,再给用户返回提交成功。
OceanBase 在此基础上进行了优化:
协调者不再保存事务提交状态,减少日志开销。
不用等到 commit log 写入就返回给用户,减少了等待日志写入的时间。
增加了 pre commit 阶段,是为了刷新参与者的最大提交版本号,全部刷新后再告诉用户提交成功,之后用户在多分区查询时读到的数据都是新的,避免出现外部一致性问题。
增加了 clear 阶段,保留事务的 commit 状态,协调者宕机重启之后就能看到参与者的 prepare 状态和 commit 状态。
具体流程如下图:

其中:
prepare:生成 prepare version。
pre commit:推高本地 max commit version。
Commit/Abort:日志多数派成功之后,解行锁,应答客户端。
Clear:释放参与者上下文。
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




