1

テーブルの相互に排他的なサブセットで一括削除と挿入を実行しているため、本来あるべきではないデッドロックに苦しんでいます。それでも、クエリを複数のスレッド (それぞれが別のパーティションにあるデータにアクセスする) で実行する場合、デッドロックは避けられないようです。

問題の詳細については、この質問も参照してください。ただし、デッドロックに対処するためにパーティショニングが推奨されるかどうか、より一般的に言えば疑問に思っています。

4

1 に答える 1

0

私見パーティショニングは何も解決しません。デッドロック状況の一連のイベントは、基本的に次のとおりです。

T1: get lock L1;
    get lock L2;

T2: get lock L2;
    get lock L1;

T1 と t2 が両方とも途中で、それぞれが 1 つのロックを所有している場合、デッドロックが発生します。L1 ロックと L2 ロックが異なるテーブルのオブジェクトを参照している場合、何も変わりません。デッドロックを引き起こすのはイベントの順序だけです。

于 2011-09-11T22:15:43.093 に答える