更新不同的 PK 行时死锁
Deadlock When Updating different PK rows
我的 SPring 集成应用程序有问题。
在代码的一处,应用程序抛出了这个错误:
ORA-00060 - 检测到死锁
我在跟踪中看到了这个:
Deadlock graph:
---------Blocker(s)-------- ---------Waiter(s)---------
Resource Name process session holds waits process session holds waits
TM-00024912-00000000 58 395 SX SSX 61 441 SX SSX
TM-00024912-00000000 61 441 SX SSX 58 395 SX SSX
session 395: DID 0001-003A-000458EF session 441: DID 0001-003D-0002C56C
session 441: DID 0001-003D-0002C56C session 395: DID 0001-003A-000458EF
Rows waited on:
Session 395: no row
Session 441: no row
我确定查询更新了两个不同的行
怎么可能在不同的PK行发生死锁呢?
问题已解决。谢谢大家的回答。
问题是 tablas 按外键引用分区,FK 没有索引,导致 Oracle 死锁阻塞所有子 table。
我已经为外键创建了所有索引,问题已经解决。
我的 SPring 集成应用程序有问题。
在代码的一处,应用程序抛出了这个错误: ORA-00060 - 检测到死锁
我在跟踪中看到了这个:
Deadlock graph:
---------Blocker(s)-------- ---------Waiter(s)---------
Resource Name process session holds waits process session holds waits
TM-00024912-00000000 58 395 SX SSX 61 441 SX SSX
TM-00024912-00000000 61 441 SX SSX 58 395 SX SSX
session 395: DID 0001-003A-000458EF session 441: DID 0001-003D-0002C56C
session 441: DID 0001-003D-0002C56C session 395: DID 0001-003A-000458EF
Rows waited on:
Session 395: no row
Session 441: no row
我确定查询更新了两个不同的行 怎么可能在不同的PK行发生死锁呢?
问题已解决。谢谢大家的回答。
问题是 tablas 按外键引用分区,FK 没有索引,导致 Oracle 死锁阻塞所有子 table。
我已经为外键创建了所有索引,问题已经解决。