锁定问题 - 'U'锁定与'X'锁定

时间:2010-05-11 16:30:32

标签: sql-server

我有几个关于Update(U)锁和Exclusive(X)锁的问题。

1)我是否更正在资源即将更新时将“X”锁放在资源上?

2)我对U锁有点模糊。我是否正确读取资源时应用了U锁,SQL Server认为以后可能需要更新资源?如果这是正确的,那么只有在事务上下文中进行读取时才会应用“U”锁吗?我想我正在试图理解在什么情况下SQL Server认为它可能需要稍后更新它刚才读的那一行。

谢谢 - 兰迪

1 个答案:

答案 0 :(得分:5)

  

1)我是否更正在资源即将更新时将“X”锁放在资源上?

  

2)我对U锁有点模糊。我是否正确读取资源时应用了U锁,SQL Server认为以后可能需要更新资源?如果这是正确的,那么只有在事务上下文中进行读取时才会应用“U”锁吗?我想我正在试图理解在什么情况下SQL Server认为它可能需要稍后更新它刚才读的那一行。

U锁与读锁兼容,但彼此不兼容,X锁即使与读锁也不兼容。

U次锁定由DML次查询UPDATEDELETEMERGE),而扫描表格行(还没有决定更新),而在决定更新行时放置X锁。

READ COMMITTED隔离模式下,在评估记录保持原样后,更新锁被解除,在更高的隔离模式下,它们一直保留到事务结束。