我们有一个名为job的表,它有一个自引用键。我们使用JPA和eclipselink作为JPA提供程序。有时我们会得到以下异常
异常[EclipseLink-4002](Eclipse持久性服务 - 2.3.2.v20111125-r10461):org.eclipse.persistence.exceptions.DatabaseException内部 例外:com.sybase.jdbc3.jdbc.SybSQLException:您的服务器命令 (系列ID#0,进程ID#384)遇到死锁情况。 请重新运行您的命令。
我们在UI中有一个动作,当执行JSM消息时会转到某个外部组件,并且会在我们的作业表中创建一条记录,然后将作业ID发送给客户端,他将被重定向到作业view列出表中的所有作业。重定向后,客户端将发送ajax请求以列出所有作业。在此操作开始时,我们将从外部组件接收通知,然后更新作业表记录。
我坚信,当select操作正在进行时,我们正在尝试更新表,这种情况正在发生。谁能告诉我如何解决这个问题。
感谢大家提前的好日子。
答案 0 :(得分:0)
除了具有良好的索引之外,您还可以通过更改表的锁定方案来解决选择/更新冲突。
Sybase在此处提供了很好的文档:
Performance and Tuning Series: Locking and Concurrency Control