1

我正在与甚至不应该出现的死锁作斗争,因为我正在对表的互斥子集运行批量删除和插入。然而,当在多个线程上运行查询(每个线程访问可能位于不同分区上的数据)时,死锁似乎是不可避免的。

有关该问题的更多详细信息,另请参阅此问题,但我想更笼统地说,是否建议使用分区来处理死锁。

4

1 回答 1

0

恕我直言,分区不会解决任何问题。死锁情况的事件链基本上是:

T1: get lock L1;
    get lock L2;

T2: get lock L2;
    get lock L1;

如果 T1 和 t2 都在中途,就会发生死锁,每个都拥有一个锁。如果 L1 和 L2 锁引用不同表中的对象,则不会发生任何变化;只有事件的顺序会导致死锁。

于 2011-09-11T22:15:43.093 回答