如何避免数据库死锁

时间:2010-01-29 17:47:35

标签: java concurrency db2 deadlock

我有一个遭受数据库死锁的群集应用程序。

这是一个使用JPA和hibernate的j2ee应用程序。数据库是Z / OS上的DB2 8.1设置为页面锁定(这是公司的要求)。

问题是主键是作为序列生成的,并且在系统有任何重要负载时尝试插入记录时经常会死锁。

是否有任何“最佳做法”可以降低死锁的可能性?

1 个答案:

答案 0 :(得分:6)

“是否有任何”最佳做法“可以降低死锁的可能性?”

死锁意味着2个(或更多)进程,2个(或更多)资源和两个不同的访问顺序。

流程1必须得到A和B.

进程2必须得到B并等待A。

如果每个进程都先得到A,那么死锁的发生率就会降低。

由于您在整个页面上陷入僵局,因此很难确保每个人都获得相同的页面来开始他们的交易。

您可以尝试通过确保在页面中广泛加扰行来尝试减少冲突。

您可以尝试通过引入“您必须获得此优先”行来减少冲突,该行将有效地实现单线程应用程序。