|
事情是这样的:1)近期数据库日志中经常出现警报:ORA-00060: Deadlock detected...
查看对应的trace文件,里面的两条sql是分别对两个不同的表执行update和delete操作,delete A表阻塞了 update B表。
2)分别查看了AB两个表的结构和关系,有相同字段,但没有直接联系,也没有外键。
正常情况下,对两个不同的表进行操作,怎么会相互影响导致死锁呢?
3)找开发人员确认,发现这两条语句是写在同一个事务中的。但即使如此,也不至于两个不同的表产生死锁吧?
后来在网上看到有人说可能是并发操作导致的,也就是当两个客户端同时对一条数据进行操作时,由于用户甲的事务还没结束,用户乙也执行了相同的操作,导致了问题?
但如果是这样,应该怎样处理才能避免死锁产生呢?烦请大神指点,感激不尽!
|
|