OBCP题目: V4 中,以下关于表锁的说法,哪些是正确的?

多选题目: V4 中,以下关于表锁的说法,哪些是正确的?

A. DML 语句会隐式加 RX 锁。

B. DDL 语句会加相应的表锁。

C. 普通 SELECT 查询会加 RS 锁。

D. SELECT FOR UPDATE 会隐式加 RX 锁。

正确答案是 A、B、D
根据 OceanBase 的官方文档:

  • 执行 DML 语句(如 UPDATEINSERTDELETE 以及 SELECT FOR UPDATE )时,数据库会自动对表加上 ROW EXCLUSIVE (RX)锁 ,这是一种隐式的加锁行为。
  • 对于 DDL 语句,为了确保修改表结构时数据的一致性,数据库也会根据操作的不同自动添加相应的表锁,例如在修改字段长度时就会加表锁
  • 需要注意的是,普通的 SELECT 查询基于 MVCC(多版本并发控制)机制,不会加任何锁,这样可以确保“读不阻塞写”,因此选项 C 的说法是不正确的。
1 个赞