1

看起来今天将是另一个垃圾。我们最近用一个完整的怪物更新了我们的 sql 盒,带有大量的内核和内存,但是我们被旧的 DB 模式卡住了,它是 crapola 我们的旧 sql 盒有问题,但与我们在新的 sql 盒中所经历的完全不同,尽管在推出的那天,它运行得非常快,一周之内就一团糟……

我们几百人使用的 .net 应用程序在 SQL 框上产生了大量的死锁和超时。我们正在努力找出原因。我们已经 - 检查了所有索引,它们现在已经尽可能好,一些主要的表太宽了,触发器数量也很愚蠢,但我们现在对此无能为力。

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

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

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

等等..当我们将数据库移动到新盒子时,它会从旧盒子备份并恢复到新盒子......

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

谢谢

纳特

4

1 回答 1

3

死锁不一定需要高负载才能发生。它们往往是设计问题的副产品,就哪些进程以何种顺序锁定数据、锁定多长时间等而言。

SQL 分析器(此处为 2008 年文章)有一些有用的功能可帮助您跟踪和分析死锁。我建议将此作为最佳起点。如果幸运的话,您会发现只有一两个罪魁祸首,您可以轻松地(例如,删除事务或缩短它们的寿命)来缓解这种情况。

于 2011-10-07T08:46:40.850 回答