我有几个关于更新 (U) 锁和独占 (X) 锁的问题。
1)当资源即将更新时,对资源施加“X”锁,我是否正确?
2)我对U锁有点模糊。当读取资源并且 SQL Server 认为稍后可能需要更新资源时应用 U 锁,我是否正确?如果这是正确的,那么只有在事务上下文中进行读取时才会应用“U”锁吗?我想我试图了解在什么情况下 SQL Server 认为它可能需要稍后更新它现在刚刚读取的行。
谢谢-兰迪
1)当资源即将更新时,对资源施加“X”锁,我是否正确?
Yes.
2)我对U锁有点模糊。当读取资源并且 SQL Server 认为稍后可能需要更新资源时应用 U 锁,我是否正确?如果这是正确的,那么只有在事务上下文中进行读取时才会应用“U”锁吗?我想我试图了解在什么情况下 SQL Server 认为它可能需要稍后更新它现在刚刚读取的行。
U
锁与读锁兼容,但彼此不兼容,X
锁甚至与读锁也不兼容。
U
锁是由DML
查询(UPDATE
, DELETE
, MERGE
) while scanning表行(尚未做出更新决定),而X
当决定更新行时会放置锁。
In READ COMMITTED
在隔离模式下,更新锁在记录被评估为保持原样后被解除,在更高的隔离模式下,它们将保留到事务结束。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)