我有几个关于Update(U)锁和Exclusive(X)锁的问题。
1)我是否更正在资源即将更新时将“X”锁放在资源上?
2)我对U锁有点模糊。我是否正确读取资源时应用了U锁,SQL Server认为以后可能需要更新资源?如果这是正确的,那么只有在事务上下文中进行读取时才会应用“U”锁吗?我想我正在试图理解在什么情况下SQL Server认为它可能需要稍后更新它刚才读的那一行。
谢谢 - 兰迪
答案 0 :(得分:5)
1)我是否更正在资源即将更新时将“X”锁放在资源上?
是
2)我对U锁有点模糊。我是否正确读取资源时应用了U锁,SQL Server认为以后可能需要更新资源?如果这是正确的,那么只有在事务上下文中进行读取时才会应用“U”锁吗?我想我正在试图理解在什么情况下SQL Server认为它可能需要稍后更新它刚才读的那一行。
U
锁与读锁兼容,但彼此不兼容,X
锁即使与读锁也不兼容。
U
次锁定由DML
次查询UPDATE
,DELETE
,MERGE
),而扫描表格行(还没有决定更新),而在决定更新行时放置X
锁。
在READ COMMITTED
隔离模式下,在评估记录保持原样后,更新锁被解除,在更高的隔离模式下,它们一直保留到事务结束。