sql死锁和几乎不断的超时

时间:2011-10-07 08:40:45

标签: sql timeout database-deadlocks

今天看起来像是另一个垃圾。我们最近用一个完整的怪物更新了我们的sql盒,里面有大量的内核和ram,但是我们仍然坚持使用旧的数据库架构,这是我们的旧sql盒有问题但我们遇到的新版本没有什么,尽管在推出当天,它运行得非常快,一周之内就完全搞乱......

我们的.net应用程序被大约一百人左右使用,在SQL框上产生了大量的死锁和超时。我们正在努力找出原因。我们已经 - 检查了所有的索引,它们现在和它们一样好,一些主要的表格太宽,并且有一些愚蠢的触发器,但是现在我们无能为力。

对于尝试多次的相同用户来说,很多pids似乎是相同的......例如..

用户:user1时间:09:21错误消息:事务(进程ID 76)在锁资源上与另一个进程死锁,并被选为死锁牺牲品。重新运行该交易。

用户:user1时间:09:22错误消息:事务(进程ID 76)在锁资源上与另一个进程死锁,并被选为死锁牺牲品。重新运行该交易。

等..当我们将数据库移动到新框时,它从旧版本备份并恢复到新版...

如果有人对我们可以做的事情有任何建议,我会给他们买多品脱

感谢

NAT

1 个答案:

答案 0 :(得分:3)

死锁不一定需要高负载。它们往往是设计问题的副产品,在哪些流程锁定数据的顺序,持续时间等等。

SQL分析器(2008 article here)有一些有用的功能可以帮助您跟踪&分析死锁。我建议这是最好的起点。如果你很幸运,你会发现只有一两个罪魁祸首,你可以轻松地删除交易,或者减少他们的寿命,以缓解这种情况。