Oracle table 上的共享索引是否会导致死锁?
Does shared index on Oracle table leads to deadlock?
我知道子 table 中未索引的外键可能会导致 ORA-00060:死锁。同样,共享索引也会导致死锁。
我在以下场景中共享了索引,
class TableA {
int tableAId;
List<TableB> listOfTableB;
}
class TableB {
String name;
}
相关休眠映射(部分),
<list cascade="all,delete-orphan" name="listOfTableB" table="TableB">
<key column="tableAId" />
<index column="idx"/>
<composite-element class="TableB">
<property name="name" column="name" not-null="true" />
</composite-element>
</list>
使用上面的代码,在 DB 中它正在为表 B 中的 'tableAId' 和 'idx' 创建一个共享索引(同名索引)。
在这种情况下,除了现有的共享索引之外,我是否应该单独为 'tableAId' 添加一个单独的索引以避免死锁?还是现有索引本身就足够了?
如果您在 tableAId, idx
上有一个索引,那么单独在 tableAid
上也有一个索引可能(几乎总是)没有任何好处。没有死锁的危险。
我知道子 table 中未索引的外键可能会导致 ORA-00060:死锁。同样,共享索引也会导致死锁。
我在以下场景中共享了索引,
class TableA {
int tableAId;
List<TableB> listOfTableB;
}
class TableB {
String name;
}
相关休眠映射(部分),
<list cascade="all,delete-orphan" name="listOfTableB" table="TableB">
<key column="tableAId" />
<index column="idx"/>
<composite-element class="TableB">
<property name="name" column="name" not-null="true" />
</composite-element>
</list>
使用上面的代码,在 DB 中它正在为表 B 中的 'tableAId' 和 'idx' 创建一个共享索引(同名索引)。
在这种情况下,除了现有的共享索引之外,我是否应该单独为 'tableAId' 添加一个单独的索引以避免死锁?还是现有索引本身就足够了?
如果您在 tableAId, idx
上有一个索引,那么单独在 tableAid
上也有一个索引可能(几乎总是)没有任何好处。没有死锁的危险。