2012-08-16 44 views
0

它的一个简单的问题,但是我有几天没有任何明确的解决方案浪费了。解决僵局的最佳方法

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

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

你们对此有何看法?数据库服务器上有没有更好的处理方法?

谢谢。

回答

0

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

如果你可以捕捉您使用跟踪标志1222具体的僵局并张贴在这里跟踪的详细信息,我们将能够进一步帮助你。