我有一个遭受数据库死锁的群集应用程序。
这是一个使用JPA和hibernate的j2ee应用程序。数据库是Z / OS上的DB2 8.1设置为页面锁定(这是公司的要求)。
问题是主键是作为序列生成的,并且在系统有任何重要负载时尝试插入记录时经常会死锁。
是否有任何“最佳做法”可以降低死锁的可能性?
答案 0 :(得分:6)
“是否有任何”最佳做法“可以降低死锁的可能性?”
死锁意味着2个(或更多)进程,2个(或更多)资源和两个不同的访问顺序。
流程1必须得到A和B.
进程2必须得到B并等待A。
如果每个进程都先得到A,那么死锁的发生率就会降低。
由于您在整个页面上陷入僵局,因此很难确保每个人都获得相同的页面来开始他们的交易。
您可以尝试通过确保在页面中广泛加扰行来尝试减少冲突。
您可以尝试通过引入“您必须获得此优先”行来减少冲突,该行将有效地实现单线程应用程序。