システムに負荷がかかっているときにデッドロックする2つのストアドプロシージャがあります。プロシージャBが同じテーブルに挿入している間に、プロシージャAはテーブルから選択しています。ロックグラフは、Proc AがProc BがIXモードロックを必要とするSモードページロックを持っていることを示していますが、Proc Aは、Proc BがすでにIXモードページロックを持っている別のページのSモードページロックを待機しています。
明らかに、両方のクエリがテーブル内のページを同じ順序でロックすることを確実にすることによってこれを整理することができますが、その方法を理解できません。
私の質問は、SQL ServerはどのようにINSERTとSELECTを実行しているときにページをロックする順序を決定し、この動作をどのように変更できるかを教えてください。