У меня есть две хранимые процедуры, которые блокируются, когда система находится под нагрузкой. Proc A выбирает из таблицы, в то время как Proc B вставляет в ту же таблицу. График блокировки показывает, что Proc A имеет блокировку страницы в режиме S, для которой Proc B хочет блокировку режима IX, Proc A ожидает блокировки страницы в режиме S для другой страницы, для которой Proc B уже имеет блокировку страницы в режиме IX ,
Ясно, что это можно решить, убедившись, что оба запроса блокируют страницы в таблице в одном и том же порядке, но я не могу понять, как это сделать.
Мой вопрос: как SQL Server определяет, в каком порядке блокировать страницы при выполнении операций INSERT и SELECT, и как вы можете изменить это поведение?