深入理解Oracle数据库中的锁定与锁存机制
1. 锁的定义
锁是一种用于调节对共享资源并发访问的机制,以确保数据完整性和一致性。在多用户环境中,锁是必不可少的,因为它们防止同一信息被并发修改。单用户数据库中,锁是不必要的,因为只有一位用户在修改信息。然而,当多个用户访问和修改数据或数据结构时,拥有一个防止同一信息被并发修改的机制至关重要。
2. 锁的类型
2.1 DML锁
DML锁用于确保一次只有一人修改一行,并且确保在您工作时没有人可以删除您正在操作的表。例如,当您执行 UPDATE 或 DELETE 语句时,Oracle会在您修改的行上放置排他锁,以防止其他会话修改同一行。这些锁确保数据的一致性和完整性,同时允许其他会话读取未锁定的数据。
2.2 数据定义锁(DDL锁)
数据定义锁(DDL锁)保护对象结构的定义,防止在修改数据的同时更改表结构。例如,当您执行 ALTER TABLE 或 DROP TABLE 语句时,Oracle会获取表的DDL锁,以确保在修改表结构时没有其他会话正在修改表中的数据。这有助于避免数据损坏和不一致。
2.3 内部锁和闩锁
内部锁和闩锁用于保护Oracle内部数据结构,如闩锁库缓存以确保查询计划的一致性。闩锁是轻量级的序列化设备,用于协调多用户对共享数据结构的访问。闩锁通常保持时间非常短,但多个会话同时请求同一个闩锁可能导致竞争。
3. 事务锁(TX锁)
事务锁(TX锁)
超级会员免费看
订阅专栏 解锁全文
1803

被折叠的 条评论
为什么被折叠?



