关于OceanBase中的只读事务,以下说法正确的是:

关于OceanBase中的只读事务,以下说法正确的是:
A. 即使事务中都是READ ONLY查询,如果没有显式指定,OceanBase不会将其当做只读事务
B. 只读事务中不允许执行SELECT FOR UPDATE
C. OceanBase不会为只读事务创建事务上下文
D. 对只读事务执行COMMIT操作时,不会执行任何提交动作

4 个赞

选BD吧

选择D
只读事务的本质是 “只读”,执行 COMMIT 时,无需进行日志刷盘(Redo Log)、锁释放等写相关操作,仅需结束事务会话,因此不会执行任何提交动作,该表述符合 OceanBase 只读事务的机制。

A,OceanBase不会自动将只包含查询的事务识别为只读事务,必须显式使用SET TRANSACTION READ ONLY 指定。只读事务中不允许执行SELECT FOR UPDATE ,因为该语句会加锁。

1 个赞

选D
这是只读事务的核心优化机制。由于没有数据变更,COMMIT无需进行日志刷盘(Redo Log)、锁释放等写相关操作,仅需结束事务会话,因此不会执行实际的提交动作。

A错误: OceanBase 具备自动识别能力。只要事务中仅包含查询语句(且不含SELECT FOR UPDATE等锁定读),即使没有显式声明 READ ONLY ,系统也会自动将其优化为只读事务处理。

B错误: 根据V4.x版本的官方定义,此说法为正确 。

C错误:事务上下文是管理事务生命周期(如事务ID、快照版本等)所必需的。即使是只读事务,系统也需要创建事务上下文来维持一致性读。

A :grinning:

1 个赞

是A

2 个赞