我们遇到了一个我们试图追踪的死锁问题。我有一个从Profiler生成的死锁图(xdl)。它将失败的SQL语句显示为简单的Select语句,而不是Update,Delete或Insert语句。该图显示Select Select语句在资源**but also owning an Update lock on a resource**
上请求共享锁。这让我感到困惑。为什么不是Insert,Update或Delete的一部分的Select语句在资源上持有更新锁定?由于更新锁定造成的死锁问题
我应该补充说它拥有的更新锁是在由Select Select语句选择的表上。
编辑:请不要建议使用NoLock。是的,这将解决问题,但引入了一个新的 - 一个肮脏的阅读问题。此查询正在打到生产服务器。我真正想知道的是为什么Select语句会发出更新锁。
我很乐意分享它。我应该怎么做? – 2010-05-11 22:49:48
如果您无法在线分享,请将其发送给我。我的电子邮件位于我的网站上的联系页面http://rusanu.com/contact-us – 2010-05-11 22:54:18
我只是在联系页面上的电子邮件地址。 – 2010-05-12 00:00:58