【问题标题】:Best way to tackle deadlocks解决死锁的最佳方法
【发布时间】:2012-08-16 15:38:56
【问题描述】:

这是一个简单的问题,但我浪费了几天的时间来解决它。

我使用 spring jdbc 模板作为我的 DAO 层 mssql sever 2005 作为我的数据库,我们有一个订单输入系统。现在,当系统上有超过 5 个人时,我们会遇到如此多的死锁场景。当人们尝试创建新订单而其他人更新现有订单时,似乎会发生锁定。同一张表的插入和更新语句之间似乎存在冲突。

我没有做任何事情来解决这个问题并且没有解决任何问题。所以现在我正在考虑引入 java.util.semaphore 或 Lock 并控制线程的并发访问,或者我可以使用 Synchronized 方法或块。

你们怎么看这件事?有没有更好的方法在数据库服务器上处理这个问题?

谢谢。

【问题讨论】:

    标签: sql-server-2005 jdbc spring-jdbc database-deadlocks


    【解决方案1】:

    您可以使用 sp_getApplock 在数据库端实现信号量等效解决方案。但大多数时候,这是没有必要的。不同类型的死锁需要不同的处理方式。查看以下链接中的帖子,了解如何修复常见的死锁模式。 http://sqlindian.com/2012/07/06/sql-server-deadlocks-and-live-lockscommon-patterns/

    如果您可以使用跟踪标志 1222 捕获您的特定死锁并在此处发布跟踪详细信息,我们将能够为您提供进一步的帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-13
      • 2018-07-29
      • 2012-04-27
      • 1970-01-01
      • 2014-09-28
      相关资源
      最近更新 更多