我对的使用有疑问NOLOCK
。
我知道NOLOCK
提示并不总是最好的方法,但是在某些情况下它很有帮助。我不是要养成一直使用它的坏习惯
我只想了解它的确切行为。有这种不切实际的假设,一个正在更新的进程记录了id = 10 UPDATE table1 SET status = 2 WHERE id = 10
,这需要30秒才能更新。同时我执行SELECT * FROM table1 WITH NOLOCK where id = 10
即使我的第一个查询在记录上具有排他锁,我的select语句仍会读取行吗?或者我的select查询会等到记录上没有锁之前,才允许读取?
我想知道是否使用NOLOCK
会导致延迟。
所述问题的简短答案是:“否”。
在大多数情况下,NOLOCK提示将加快所查询的查询以及同时对指定表进行操作的任何其他查询的速度。原因是没有检查或获取任何锁。您已在问题中列出了可能的副作用,因此在此不再赘述。
最终,查询会更快,但结果会令人怀疑。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句