OceanBase 数据库中事务引擎主要有以下功能:
事务执行
DML 执行:DML 语句的执行过程
版本号管理(LTS/GTS):语句执行过程中涉及到的版本号的管理
并发控制(行锁、MVCC):语句执行过程中的一些并发控制
事务提交
分布式两阶段提交
单分区本地事务提交
提交优化(提前响应客户端、1PC、PG)
新特性
XA 事务
复制表
弱一致性读
本章主要介绍 OceanBase 有关事务执行和事务提交的相关内容,新特性的相关内容不是本章重点,大家可以到官网自行了解。
5.1 事务执行
相关概念
在介绍事务引擎之前,首先需要了解一下 OceanBase 的一些特殊概念。
单分区本地事务
只涉及单个分区,且事务 Session 和分区 Leader 在同一台机器上。
分布式事务
涉及多个分区(单机或跨机),或 Session 和分区 Leader 跨机的单分区事务。
事务日志
Redo Log:重做日志,用于恢复数据。
Prepare Log:用于事务提交的准备阶段。
Commit/Abort Log:用于事务提交的提交/终止阶段。
Clear Log:用于事务提交的清理阶段。
重要缩写
2PC:two phase commit,事务的两阶段提交协议。
1PC:one phase commit,事务的一阶段提交协议。
PG:Partition Group,分区组。
LTS
Local Timestamp Service,本地时间戳服务,这是 1.X 提出的概念。
GTS
Global Timestamp Service,全局时间戳服务,这是 2.X 提出的概念。
Query 执行流程

如上图,右边是 SQL 引擎中的执行过程,左边是事务引擎中的执行过程。
数据库接收到 SQL 语句之后,经过语法解析、优化器等执行过程,最终生成该语句的执行计划,同时在 plan cache 缓存该计划。Plan Cache 可以提升后续 SQL 的执行效率,如果后续出现类似的语句可以直接复用该执行计划,节省开销。
当 SQL 的执行计划确定之后,整体流程就进入到了事务引擎。这里将 SQL 语句分为如下三类。
非 INSERT 语句:update、delete 等
INSERT 语句:insert
CMD 语句:begin、commit 等
最后语句执行结束,返回结果给客户端。




