带有(NOLOCK)提示的SQL服务器

时间:2014-10-01 08:25:03

标签: sql sql-server performance nolock

有人可以解释一下,如果在SQL查询中使用(NOLOCK)实际上导致它们运行得更快吗?如果是这样,为什么?

2 个答案:

答案 0 :(得分:5)

使用NOLOCK本身并不能加快您的个人查询速度。但它允许其他查询访问同一个表,从而减少因死锁而丢失的时间。

当一个客户端选择更新表并花费大量时间来完成事务时,这尤其有用。使用NOLOCK命令,其他客户端可以执行尝试访问该表的查询。他们不必等待更新完成,因此即使一个事务仍在进行中,其他事务也可以完成。

这并不意味着使用NOLOCK命令可以提高单个查询的性能。它简单地提高了涉及多个客户端或批量执行的整体性能。

但是,使用NOLOCK时,您需要注意脏读的风险。 Here's a good article解释了为什么通常应该避免使用NOLOCK

答案 1 :(得分:0)

WITH(NOLOCK)(source):

  

不要发布共享锁,也不要使用独占锁。当此选项生效时,可以读取未提交的事务或在读取过程中回滚的一组页面。脏读是可能的。仅适用于SELECT语句。