代码之家  ›  专栏  ›  技术社区  ›  Kobojunkie

需要死锁帮助

  •  -1
  • Kobojunkie  · 技术社区  · 15 年前

    我有一个特殊的情况。我有一些表经常被代码的不同部分和成千上万的客户机访问,因此我们在对表进行简单的更新和插入时使用了事务。问题是我们总是会遇到死锁错误。有人知道我怎样才能缓解这个问题吗?

    2 回复  |  直到 15 年前
        1
  •  4
  •   Mitch Wheat    15 年前

    死锁可能有多种原因及其组合:

    • 查询的索引不正确 工作量

    • 积极的事务隔离级别和/或长时间运行的未结事务

    • 糟糕的应用程序访问模式

    • 低规格或配置错误

    所有这些都很常见。

    我建议你读

        2
  •  4
  •   Dave Markle    15 年前

    这个问题并不特别——当开发人员不太了解锁的工作原理,只把事务看作“黑匣子”并期望他们的解决方案能够扩展时,这是很典型的。

    米奇的评论是对的,他给了一个专家报酬——这个问题太大了,任何解决办法都无法解决。您需要准备好导致死锁的查询跟踪,并且必须分析从索引到表设计、事务隔离级别到查询模式的所有内容。

    我建议从SQL Server Profiler开始,设置一个跟踪,它将生成一个死锁图。这至少可以确定问题查询和死锁的资源。设置另一个跟踪以查找慢速查询(例如100毫秒),并加快这些查询的速度。查询运行的时间越长,锁争用的概率就越高。

    推荐文章