我之前已经多次阅读和使用 with(nolock) 提示,但我对特定案例有疑问。
就我而言,我有一组引用和更新一个数据库的代码。
此代码旨在以单线程方式运行。几个月前,他们决定在不更改代码的情况下使其成为多线程。他们的做法是让每个不同的“代码处理器”管理不同的商店组。
例如,处理器 1 负责存储 1 到 20,处理器 2 负责存储 21 到 40,依此类推。
在我们开始陷入僵局之前,一切似乎都很好。死锁总是在页面上......如果锁只在行上,我们将永远不会出现死锁,因为来自一个处理器的数据永远不会与来自另一个处理器的数据发生冲突。基于这个理论,我决定在每个不需要锁定的选择上加上 With(Nolock) 提示(尚未投入生产)......这使我的死锁在我的实验室中消失了。
一切看起来都很好而且很漂亮,直到我的同事来找我这篇文章把我吓坏了......然后我读了那个......
在我的情况下使用 With(Nolock) 提示是否存在危险......处理器之间的数据永远不会发生冲突?