哪个解决方法用于以下SQL死锁?

时间:2010-12-11 23:26:53

标签: sql

1 个答案:

答案 0 :(得分:0)

我们终于设法解决了我的问题。

我没有使用解决方法2,因为跳过页面会导致问题,我不想冒这个风险。

我没有使用变通方法3,因为每个数据库都有快照隔离。这意味着所有表都会受到影响,每行会变大14个字节(我认为),对我来说不是一个可行的选择。

我选择了解决方法1 - 我在sp_executesql语句周围创建了一个全局互斥锁。这样做的好处是可以100%保证一切正常,但当然它根本无法扩展。目前这不是问题,因为拥堵并不是那么大。虽然我仍然想找到一种方法如何并行执行有问题的sql语句,而不会出现死锁并且不会丢失属于指定工作室的行。所以,如果有人有任何想法,请随时回答/评论。

(我确实考虑过删除受影响的表上的所有索引,因为我确定死锁也与索引有关。但我可能最终会得到全表锁,这不是更好比我的互斥解决方案。事实上它更糟糕,因为在我的互斥解决方案中我可以使用索引并避免全表扫描,这更快。)