当执行语句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 操作,但阻止其他会话获取独占锁。