PageLock против пакетного уменьшения размера в SQL Server
Я пытаюсь понять, как лучше всего избежать блокировки между двумя SP с именами Proc1 и Proc2 в таблице с именем Table1, содержащей миллионы строк.
Учитывая следующие критерии:
Proc1 обновляет данные в Table1.
Proc2 читает данные из Table1.
Proc1 выполняется для обновления более 4000 строк, Proc2 блокируется. Блокировка влияет на все строки, включая те, которые не обновляются Proc1.
Мне нужно убедиться, что во время выполнения Proc1 Proc2 может получить доступ к данным в Table1, которые Proc1 не обновляет. Что нужно изменить в Proc1?
Либо примените блокировку строки / страницы, которая будет иметь смысл, поскольку происходит эскалация 5000 блокировок, если нет нехватки памяти, либо мне следует уменьшить пакет обновления до менее 4000, таким образом применяются меньшие блокировки?