解决僵局的最佳方法

时间:2012-08-16 15:38:56

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

这是一个简单的问题,但是我浪费了几天没有任何明确的解决方案。

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

我做了一些事情来解决这个问题并没有解决任何问题。所以现在我想介绍java.util.semaphore或一个Lock并控制线程的并发访问,或者只是我可以去同步方法或块。

你们对此有何看法?有没有更好的方法在数据库服务器上处理它?<​​/ p>

感谢。

1 个答案:

答案 0 :(得分:0)

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

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