知道所选行没有被修改时使用NOLOCK有什么风险?

时间:2017-07-19 12:50:51

标签: sql sql-server

我有一张约70万个注册管理机构的表,其中包含来自不同国家的数据,并且偶尔会遇到死锁。

我可以让交易从特定国家/地区的表格中选择数据,而其他交易可能是在写另一个国家/地区的数据。但是,永远不可能同时发生同一国家的读/写。

我认为在这种特殊情况下使用NOLOCK会没问题吗?可能有任何风险吗?

1 个答案:

答案 0 :(得分:0)

你的想法太高了。 NOLOCK是一个低级别的提示。仅仅因为一个记录用于国家A而另一个记录用于国家B并不意味着它们不是例如在同一个数据页面上;或者他们的索引不在同一个数据页面上。当你更新国家B时,你仍然会面临同样的风险,就好像你正在更新国家A.你仍然得到脏读,你仍然会得到重复和丢失的记录,整个shebang。可能有某些缓解选项(表分区,也许?),但我不够了解这个问题。