NOLOCK暗示会减慢运行速度吗?

时间:2016-03-04 17:29:25

标签: sql sql-server locking nolock

我对NOLOCK的使用有疑问。

我理解NOLOCK提示并不总是最好的方法,但在某些情况下它非常有帮助。我并没有试图养成一直使用它的坏习惯

我只是想了解它的确切行为。有一个不切实际的假设是更新记录的过程,其中id = 10 UPDATE table1 SET status = 2 WHERE id = 10需要30秒才能更新。同时我执行SELECT * FROM table1 WITH NOLOCK where id = 10

我的select语句是否会读取该行,即使我的第一个查询在记录上有一个独占锁定,或者我的select查询是否等待,直到在它允许读取之前没有锁定记录上的内容?

我想知道NOLOCK的使用是否会导致延迟。

1 个答案:

答案 0 :(得分:2)

对所述问题的简短回答是:"否。"

在大多数情况下,NOLOCK提示将加速有问题的查询,以及同时针对指定表操作的任何其他查询。原因是没有检查或获得锁。您已在问题中列出了可能的副作用,因此我不会在此处介绍这些副作用。

在一天结束时,查询会更快,但结果将是可疑的。