为什么nolock在查询数据库时很重要

Jay*_*Lal 2 sql sql-server-2008

在一个庞大的数据库上,我正在提取大量数据.例如我的查询是

select * from temp
Run Code Online (Sandbox Code Playgroud)

它导致我的应用程序用户出错,然后我意识到我是因为我的查询花了太长时间来提取数据.

然后我修改了我的查询

select * from temp with(nolock)
Run Code Online (Sandbox Code Playgroud)

然后一切都很顺利.有人请解释为什么nolock如此重要.

Rad*_*hiu 5

NOLOCK 覆盖,以确保您从数据库中读取的数据是一致的,尊重规则ACID规则( tomicity,Ç onsistency,染料溶液,d urability).

如果你在没有 NOLOCK那时运行查询,你将总是得到相同的结果(假设在此期间没有其他人删除或更新任何数据).

如果你运行一个查询 NOLOCK两次或两次以上,结果可能会不同.

NOLOCK 实际上意味着你告诉DB返回它可以读取的数据,无论它是否已经提交到数据库.

因此,总而言之:NOLOCK如果您想要准确的数据,这一点非常重要.如果你想要数据,那么你可以使用NOLOCK,但这通常不是一个好主意.