0

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

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

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

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

谢谢。

4

1 回答 1

0

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

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

于 2012-08-21T23:28:06.053 回答