Использование WITH (NOLOCK) в SQL Server - PullRequest
0 голосов
/ 10 января 2020

У меня вопрос по поводу использования WITH (NOLOCK / READPAST) на SQL Сервере.

Когда я использовал подсказку WITH (NOLOCK / READPAST) для одной или двух таблиц, и у меня есть другие таблицы в JOIN, должен ли я использовать эту подсказку для всех таблиц или только для таблиц, которые я знаю об этой необходимости?

1 Ответ

0 голосов
/ 10 января 2020

Как указал GSerg в таблице комментариев, для каждой таблицы используются подсказки.

OP прокомментировал, что он / она использует ее для чтения журналов. Я предполагаю, что таблицы журналов не являются «богатыми индексами» по многим причинам, в основном это касается производительности вставок.

При отсутствии или отсутствии индексов, запрашивающих, что журнал будет проблематичным и может легко выродиться в сканирование таблицы, выполняя это для таблицы. Сильное обновление (вставками) действительно может привести к одному из немногих сценариев ios, где (NOLOCK) оправдано.

Используйте подсказку на любом столе в объединении, вы не боитесь испачкать чтение или пропущенные заблокированные строки.

Редактировать

Джероен и Ламу дают нам хорошее представление о комментариях. Я знаю, что много раз мы не можем изменить схему, просто адаптируемся и пытаемся сделать все возможное с тем, что у нас есть. Но если вы можете улучшить функцию ведения журнала / аудита, изменив таблицу / схему, сделайте это.

...