OBCP题目: 关于只读事务的特性,以下哪些是正确的?

多选题: 关于只读事务的特性,以下哪些是正确的?

A. 不创建事务上下文。

B. 不允许使用 SELECT FOR UPDATE。

C. COMMIT 和 ROLLBACK 命令不执行任何操作。

D. 需要参与两阶段提交。

1 个赞

正确答案是:B、C,,,楼主采纳一下我!!!

解析:

  • A. 不创建事务上下文(错误) :只读事务依然是一个事务,它需要事务上下文来维持隔离级别和一致性快照(如 MVCC 机制下的 Read View)。它只是不修改数据,但依然需要事务上下文来保证读取的一致性。
  • B. 不允许使用 SELECT FOR UPDATE(正确)SELECT FOR UPDATE 是一种“当前读”,会对数据加排他锁,目的是为了防止其他事务修改这些数据,以便当前事务后续进行更新。而只读事务明确声明不会修改数据,因此数据库引擎会禁止在只读事务中使用加锁的查询语句(如 SELECT FOR UPDATELOCK IN SHARE MODE )。
  • C. COMMIT 和 ROLLBACK 命令不执行任何操作(正确) :在只读事务中,由于没有任何数据被修改,因此没有需要持久化的变更,也没有需要撤销的变更。此时执行 COMMITROLLBACK 仅仅是结束当前事务,释放快照资源,并不会对磁盘数据或内存中的脏数据做任何实质性的写入或回滚操作。
  • D. 需要参与两阶段提交(错误) :两阶段提交(2PC)是分布式事务中用于保证跨节点/跨库数据一致性的协议。普通的单机只读事务不涉及数据修改,自然不需要参与 2PC;即使是分布式只读事务,由于没有写入操作,通常也不需要走完整的 2PC 提交流程。

答案ABC,你改下

ABC