事务锁兼容性
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了事务锁兼容性相关的知识,希望对你有一定的参考价值。
锁兼容性(数据库引擎)
锁兼容性控制多个事务能 否同时获取同一资源上的锁。如果资源已被另一事务锁定,则仅当请求锁的模式与现有锁的模式相兼容时,才会授予新的锁请求。如果请求锁的模式与现有锁的模式 不兼容,则请求新锁的事务将等待释放现有锁或等待锁超时间隔过期。例如,没有与排他锁兼容的锁模式。如果具有排他锁(X 锁),则在释放排他锁(X 锁)之前,其他事务均无法获取该资源的任何类型(共享、更新或排他)的锁。另一种情况是,如果共享锁(S 锁)已应用到资源,则即使第一个事务尚未完成,其他事务也可以获取该项的共享锁或更新锁(U 锁)。但是,在释放共享锁之前,其他事务无法获取排他锁。
下表显示了最常见的锁模式的兼容性。
|
现有的授权模式 |
|
|
|
|
|
---|---|---|---|---|---|---|
请求的模式 |
IS |
S |
U |
IX |
SIX |
X |
意向共享 (IS) |
是 |
是 |
是 |
是 |
是 |
否 |
共享 (S) |
是 |
是 |
是 |
否 |
否 |
否 |
更新 (U) |
是 |
是 |
否 |
否 |
否 |
否 |
意向排他 (IX) |
是 |
否 |
否 |
是 |
否 |
否 |
意向排他共享 (SIX) |
是 |
否 |
否 |
否 |
否 |
否 |
排他 (X) |
否 |
否 |
否 |
否 |
否 |
否 |
注意 |
---|
意 向排他锁(IX 锁)与 IX 锁模式兼容,因为 IX 表示打算只更新部分行而不是所有行。还允许其他事务尝试读取或更新部分行,只要这些行不是其他事务当前更新的行即可。此外,如果两个事务尝试更新同一行, 则将在表级和页级上授予这两个事务 IX 锁。但是,将在行级授予一个事务 X 锁。另一个事务必须在行级锁被删除前等待。 |
使用下表可以确定 Microsoft SQL Server 中所有可用的锁模式的兼容性。
以上是关于事务锁兼容性的主要内容,如果未能解决你的问题,请参考以下文章