如何避免数据库死锁

Jes*_*sse 4 java db2 concurrency deadlock

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

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

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

是否有任何"最佳实践"来降低死锁的可能性?

S.L*_*ott 6

"有没有"最佳做法"来降低僵局的可能性?"

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

过程1必须得到A和B.

过程2必须得到B并等待A.

如果每个进程都先获得A,则死锁的发生率会降低.

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

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

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