在一个巨大的数据库上工作,我正在提取大量数据。例如我的查询是
select * from temp
这导致我的应用程序用户出错,然后我意识到我的问题是因为我的查询提取数据花费的时间太长。
然后我用
修改了我的查询select * from temp with(nolock)
然后一切顺利。有人请解释为什么 nolock 如此重要。
请您参考如下方法:
NOLOCK
覆盖确保您从数据库中读取的数据一致并遵守 ACID 的规则规则(A原子性、一致性一致性、I隔离、D耐用性)。
如果您在没有 NOLOCK
的情况下运行查询,那么您将始终得到相同的结果(假设在此期间没有其他人删除或更新任何数据)。
如果您WITH NOLOCK
运行查询两次或更多次,您的结果可能会有所不同。
NOLOCK
其实就是告诉DB返回它能读到的数据,不管有没有commit到数据库。
因此,总而言之:NOLOCK
很重要,无论您是否想要准确 数据。如果您想要只是数据,那么您可以使用NOLOCK
,但这通常不是一个好主意。