场景:MID字段有唯一索引,数据提交给上级,上级会返回响应和报告,响应和报告都会根据MID更新到表里
问题:Oracle 多线程批量更新造成死锁
解决方案1:线程互斥锁,保证同时只会有一根线程在更新。能解决死锁问题,但更新有很高的延时,所以弃用
解决方案2:把响应和报告抽象为一个类,

避免出现上图情况,根据MID最后一位分组,线程1只会更新MID=***1,线程2更新MID=***2,以此类推,如下图

理论上就算多线程同时更新,也会互不影响。
但实际测试还是发生了死锁,直到ORA-00060: deadlock detected while waiting for resource,回滚后才看到有线程继续更新的日志
此方案比方案1快,但是未解决死锁问题,也不明白问题出在那里。
有请大佬指教下方案2的问题出在哪里,不胜感激
