出现锁升级(lock escalation)时,系统会降低锁的粒度。举例来说,数据库系统可以把一个表的100个行级锁变成一个表级锁。现在你用的是“能锁住全部的一个锁”,一般而言,这还会锁住以前没有锁定的大量数据。如果数据库认为锁是一种稀有资源,而且想避免锁的开销,这些数据库中就会频繁使用锁升级。
但是,Oracle不会升级锁,从来不会。也就是说,Oracle从来不会升级锁,但是它会执行锁转换(lock conversion)或锁提升(lock promotion),这些词通常会与锁升级混淆。
Oracle会尽可能地在最低级别锁定(也就是说,限制最少的锁),如果必要,会把这个锁转换为一个更受限的级别。例如,如果用FOR UPDATE子句从表中选择一行,就会创建两个锁。一个锁放在所选的行上(这是一个排他锁;任何人都不能以独占模式锁定这一行)。另一个锁是ROW SHARE TABLE锁,放在表本身上。这个锁能防止其他会话在表上放置一个排他锁,举例来说,这样能相应地防止这些会话改变表的结构。另一个会话可以修改这个表中的任何其他行,而不会有冲突。假设表中有一个锁定的行,这样就可以成功执行尽可能多的命令。
锁升级不是一个数据库“特性”。这不是我们想要的性质。如果数据库支持锁升级,就说明这个数据库的锁定机制中存在某些内部开销,而且管理数百个锁需要做大量的工作。在Oracle中,1个锁的开销与1 000 000个锁是一样的,都没有开销。
注:oracle9i&10g编程艺术阅读笔记
分享到:
相关推荐
这意味着Oracle没有其他数据库的锁升级现象,而是执行锁转换,尽可能在最低级别加锁。Oracle的这种设计减少了锁管理的开销,并避免了因锁数量不足导致的锁升级引发的死锁问题。 与DB2等其他数据库相比,Oracle的...
### Oracle锁机制详解 #### 锁的基本概念与作用 锁机制是Oracle数据库中用于管理并发访问共享资源的关键组件。在多用户环境中,确保数据的一致性和完整性至关重要,尤其是在多个会话试图同时修改相同数据的情况下...
### Oracle 9.2.0.1到9.2.0.4的升级步骤详解 在企业级数据库管理中,Oracle数据库的版本升级是确保系统稳定性和安全性的重要环节。从Oracle 9.2.0.1(即9201)升级到9.2.0.4(即9204),涉及到多个关键步骤和技术...
- **锁升级**:Oracle也支持锁升级的概念,但它采用的是“表锁”或“行锁”转换的方式,而不是像DB2那样直接升级为更高层次的锁。 #### 四、DB2与Oracle的比较 **4.1 锁的类型** - **DB2**:支持更广泛的锁类型,...
这篇博客文章将深入探讨Oracle锁的相关知识点。 首先,我们需要了解锁的种类。在Oracle中,主要有两种类型的锁:行级锁(Row-Level Locks)和表级锁(Table-Level Locks)。行级锁允许并发用户同时访问不同的数据行...
《DB2与Oracle锁比较——并发控制的深度探讨》 在数据库系统中,尤其是在多用户并发环境下,确保数据的一致性和完整性至关重要。DB2和Oracle作为两大主流的关系型数据库管理系统,都采用了并发控制机制——锁,来...
### Oracle解锁知识点详解 #### 一、Oracle锁定机制与解锁操作的重要性 在Oracle数据库系统中,锁定机制(Locking Mechanism)是确保数据一致性和事务处理完整性的重要手段。当多个用户试图同时修改相同的数据时,...
5. **表级锁**:在特定情况下,如DML操作,Oracle可能会升级锁定到表级别,以减少锁冲突。 6. **模式锁**:在DDL操作时使用,保护对象的结构。 7. **行级乐观锁**:通过版本控制实现,每次读取数据时并不加锁,只有...
【DB2锁升级】为优化内存使用,DB2允许锁升级。当一个事务对表的操作增多,内存开销增加时,数据库管理系统会自动将行锁升级为表锁,以减少锁的数量,从而节省内存。这涉及到两个关键的数据库配置参数:locklist,它...
什么是锁? 锁定问题 丢失更新 悲观锁定 乐观锁定 乐观锁定还是悲观锁定? 阻塞 死锁 锁升级
本文将深入探讨Oracle锁表的处理方法、数据迁移从Oracle 9i到10.2及以上版本的策略以及Oracle SPFILE的使用技巧。 首先,让我们来了解Oracle锁表的相关知识。在Oracle数据库中,锁是用来管理多用户并发访问同一资源...
Oracle数据库的整库跨平台升级是一项复杂而关键的任务,尤其对于早期用户,特别是大型国有企业,他们可能需要将正在运行的旧版本Oracle产品升级到最新版本,以突破性能限制,提升应用系统的性能,满足日益增长的企业...
- 当一条语句修改了一条记录时,只有这条记录被锁定,不存在锁升级的情况。 - 修改某行时,会阻止其他用户对该行的修改。 - 读操作通常不会阻止写操作,除非使用了特殊的锁定方式(如`SELECT FOR UPDATE`)。 - 写...
此外,DB2还有锁升级功能,以减少内存开销。 3. Oracle的并发控制 Oracle的并发控制同样基于锁,但它采用的是多版本并发控制(MVCC),这种机制下,每个事务看到的数据版本取决于其开始时间,而非实际的最新状态,...
4. cursor: pin S wait on X - 当一个线程持有了共享锁并等待排他锁时,这可能是因为需要升级锁权限。 5. library cache: mutex X, library cache: mutex S - 这些等待与库缓存(Library Cache)中的Mutex有关,库...
5. **Oracle锁类型** - 用户锁和系统锁:根据用户与系统的不同,Oracle的锁分为用户锁(如行级锁、表级锁)和系统锁(如系统资源锁)。 - 行级锁:锁定单个数据行,允许其他事务同时访问表的其他行。 - 表级锁:...
以下是对Oracle锁的详细解析: 1. **锁的类型**: - **共享锁(S锁)**:也称为读锁,允许一个或多个事务读取一行数据,但不允许其他事务进行修改。 - **排他锁(X锁)**:也称为写锁,允许一个事务独占数据行...
#### 七、Oracle锁的具体类型 - **TM锁**:表级锁,用于保护表免受DDL操作的影响。 - **TX锁**:事务锁,用于保护正在修改的数据免受其他会话的干扰。 - **锁的检测与解决**:通过查询`V$LOCK`等视图可以发现当前...