1
我对使用NOLOCK
有疑问。NOLOCK提示减慢操作吗?
我明白NOLOCK
提示并不总是最好的方法,但在某些情况下,它是非常有帮助的。我并非试图制造一直使用它的坏习惯
我只是想了解它的确切行为。有这种不现实的说法,即更新记录的过程,其中id = 10 UPDATE table1 SET status = 2 WHERE id = 10
需要30秒更新。同时我执行SELECT * FROM table1 WITH NOLOCK where id = 10
即使我的第一个查询对该记录有一个排它锁,或者我的select查询是否等到没有锁定记录之前它会允许读?
我想知道NOLOCK
的使用是否会导致延迟。
[SELECT语句中的NOLOCK提示的影响]的可能重复(http://stackoverflow.com/questions/210171/effect-of-nolock-hint-in-select-statements) – DhruvJoshi
相反,它可能会运行更快一点,因为它不必关心锁。是的,您的选择查询将读取该行...大部分时间。它可能会错过它,甚至可能会返回两次。看看这篇文章。 http://blogs.sqlsentry.com/aaronbertrand/bad-habits-nolock-everywhere/它的目标是让人们远离使用该提示,但它也有很多非常有价值的信息。如果认为你需要阅读它,那么你就明白了这个提示的真正含义。 –
'SELECT'可能会或可能不会读取该行。这被称为脏读,并且这样的行可能被读取为零,一次或两次。我注意到肖恩的评论引用了Aaron Bertrand在这个话题上的博客(我正在引用自己)。我第二次鼓励你阅读它。 –