У мене є дві збережені процедури, які глухо замикаються, коли система перебуває під навантаженням. Proc A вибирається з таблиці, тоді як Proc B вставляється в ту саму таблицю. Графік блокування показує, що Proc A має блокування сторінки в режимі S, для якого Proc B хоче заблокувати режим IX, Proc A однак чекає блокування сторінки в режимі S для іншої сторінки, для якої у Proc B вже заблоковано сторінку в режимі IX .
Зрозуміло, це можна було б розібрати, забезпечивши, що обидва запити блокують сторінки в таблиці в одному порядку, але я не можу зрозуміти, як це зробити.
Моє запитання: Як SQL Server визначає, в якому порядку блокувати сторінки, роблячи INSERTs і SELECTs, і як можна змінити цю поведінку?