刘艳兵的学习博客

刘艳兵的学习博客

当执行语句insert into table …;时,数据库会自动为其获取哪类TM锁?
A    RS(SS)
B    SRX(SSX)
C    S
D    X
E    RX(SX)

答:
E    RX(SX)

        在 Oracle 数据库中,当执行 INSERT 语句时,数据库会自动为表获取特定类型的表级锁(TM锁)。这些锁用于确保数据的一致性和完整性。具体来说,INSERT 语句会获取哪种类型的锁取决于操作的性质和数据库的内部机制。

表级锁类型

1. RS(Row Share)锁:
   - 也称为 SS(Shared)锁。
   - 允许多个会话在同一表上并发执行 SELECT、INSERT、UPDATE 和 DELETE 操作。
   - 用于保护表免受其他会话的独占锁。

2. SRX(Share Row Exclusive)锁:
   - 也称为 SSX(Share Subexclusive)锁。
   - 允许其他会话执行 SELECT 操作,但不允许其他会话执行 INSERT、UPDATE 或 DELETE 操作。
   - 通常用于 SELECT FOR UPDATE 语句。

3. S(Share)锁:
   - 允许多个会话在同一表上并发执行 SELECT 操作。
   - 阻止其他会话获取独占锁。

4. X(Exclusive)锁:
   - 独占锁,不允许其他会话在同一表上执行任何 DML 操作(SELECT 除外)。
   - 通常用于 ALTER TABLE、DROP TABLE 等DDL操作。

5. RX(Row Exclusive)锁:
   - 也称为 SX(Subexclusive)锁。
   - 允许多个会话在同一表上并发执行 INSERT、UPDATE 和 DELETE 操作,但阻止其他会话获取独占锁。
   - 通常用于 INSERT、UPDATE 和 DELETE 操作。

INSERT 语句的锁类型

当执行 INSERT 语句时,Oracle 数据库会自动为表获取 RX(Row Exclusive)锁。这种锁允许其他会话在同一表上并发执行 INSERT、UPDATE 和 DELETE 操作,但阻止其他会话获取独占锁。

10-31 15:33