4.2.1
请问,分布式事务的开启,需要额外的声明,还是像往常使用集中式数据库使用的方式,来开启事务
根据设置租户的zone优先级leader分布在多个zone节点上,像往常使用集中式数据库使用的方式
在 OceanBase 数据库中,分布式事务的开启并不需要特别的声明,其开启方式与常规的集中式数据库事务开启方式类似。具体来说:
-
自动开启:在无事务开启的 Session 中执行 DML 语句(除了
SELECT
)、DCL 语句或 DDL 语句时,默认会开启一个事务。 - 手动开启:可以通过以下 SQL 语句手动开启事务:
START TRANSACTION
[READ ONLY | READ WRITE];
BEGIN [WORK] ;
开启事务后,根据事务涉及的日志流 Leader 数量以及事务 Session 的位置,系统会自动判断该事务是否为分布式事务。具体而言:
- 如果事务涉及的日志流数量大于一个,或者事务涉及的日志流数量虽然只有一个但是日志流的 Leader 和事务 Session 位置不在同一个 Server 上,那么这样的事务会被认定为分布式事务。
- 如果事务涉及的日志流数量只有一个,并且日志流的 Leader 和事务 Session 位于同一个 Server 上,那么这样的事务被认定为单日志流事务而非分布式事务。
因此,在实际操作中,您无需特别声明开启分布式事务,只需按照常规方式开启事务即可。OceanBase 会根据事务的具体情况自动识别并处理分布式事务。
具体信息可参考以下文档:
1 个赞