在一个巨大的数据库上工作,我正在提取大量数据。例如我的查询是

select * from temp 

这导致我的应用程序用户出错,然后我意识到我的问题是因为我的查询提取数据花费的时间太长。

然后我用

修改了我的查询
select * from temp with(nolock) 

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

请您参考如下方法:

NOLOCK 覆盖确保您从数据库中读取的数据一致并遵守 ACID 的规则规则(A原子性、一致性一致性、I隔离、D耐用性)。

如果您在没有 NOLOCK 的情况下运行查询,那么您将始终得到相同的结果(假设在此期间没有其他人删除或更新任何数据)。

如果您WITH NOLOCK 运行查询两次或更多次,您的结果可能会有所不同。

NOLOCK其实就是告诉DB返回它能读到的数据,不管有没有commit到数据库。

因此,总而言之:NOLOCK 很重要,无论您是否想要准确 数据。如果您想要只是数据,那么您可以使用NOLOCK,但这通常不是一个好主意。


评论关闭
IT序号网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!