oracle 锁和闩_笔记7:锁升级
时间:2014-04-18 09:21 来源: 我爱IT技术网 作者:微风
锁升级
出现锁升级(lock escalation)时,系统会降低锁的粒度。举例来说,数据库系统可以把一个表的100个行级锁变成一个表级锁。现在你用的是“能锁住全部的一个锁”,一般而言,这还会锁住以前没有锁定的大量数据。如果数据库认为锁是一种稀有资源,而且想避免锁的开销,这些数据库中就会频繁使用锁升级。
Oracle从来不会升级锁,但是它会执行锁转换(lock conversion)或锁提升(lock promotion),这些词通常会与锁升级混淆。
Oracle会尽可能地在最低级别锁定,如果必要,会把这个锁转换为一个更受限的级别。例如,如果用FOR UPDATE子句从表中选择一行,就会创建两个锁。一个锁放在所选的行上(这是一个排他锁;任何人都不能以独占模式锁定这一行)。另一个锁是ROW SHARE TABLE锁,放在表本身上。这个锁能防止其他会话在表上放置一个排他锁,举例来说,这样能相应地防止这些会话改变表的结构。另一个会话可以修改这个表中的任何其他行,而不会有冲突。假设表中有一个锁定的行,这样就可以成功执行尽可能多的命令。
本文来源 我爱IT技术网 http://www.52ij.com/jishu/5198.html 转载请保留链接。
- 评论列表(网友评论仅供网友表达个人看法,并不表明本站同意其观点或证实其描述)
-
