Что может произойти в результате использования (nolock) на каждом ВЫБОРЕ в SQL Server?

Форматирование работ правильно даже, не имея необходимость к раунду:

"%.1f" % n
13
задан Cœur 30 April 2017 в 12:18
поделиться

3 ответа

Повторная публикация этого ответа:


NOLOCK означает полное отсутствие блокировок.

Ваш запрос может возвращать части данных по состоянию на ОБНОВЛЕНИЕ и его части после ОБНОВЛЕНИЕ в одном запросе .

Например, дебет без кредита и тому подобное.

Например, я только что запустил это запрос к большой таблице:

SELECT  SUM(LEN(name))
FROM    master WITH (NOLOCK)
OPTION (MAXDOP 1)

---
18874367

Все имя имеют длину 1 .

Затем я повторно запустил его и в середине запроса обновил таблицу:

UPDATE  master
SET     name = 'tt'
WHERE   id <= 10000

SELECT  SUM(LEN(name))
FROM    master WITH (NOLOCK)
OPTION (MAXDOP 1)

---
18874944

Как мы видим, этот запрос обнаружил 577 строк как обновленные (длина 2 ), все остальные строки как не обновленные (длина 1 ).

SELECT  SUM(LEN(name))
FROM    master WITH (NOLOCK)
OPTION (MAXDOP 1)

---
18884367

И этот запрос, запущенный сразу после завершения предыдущего, видит все обновления.

15
ответ дан 2 December 2019 в 00:31
поделиться
1
ответ дан 26 October 2019 в 00:11
поделиться

Недавно я потратил много времени, выясняя некоторое время и блокируя проблемы для процесса построения хранилища данных. Как оказалось, из-за того, что данные для загрузки хранилища предназначены только для чтения, я добавил подсказки nolock к запросам исходных данных для etl, чтобы снизить потребность в эскалации блокировки на сервере sql и предотвратить сбой нагрузки etl. . Для этого у меня было очень мало контроля над сервером sql и приложением. Опять же, это было целевое решение, и я не рекомендую широко использовать какие-либо подсказки в запросах как общее правило. Как и во всех тестах и ​​обзорах производительности, есть ключевые области, на которые следует обратить внимание, чтобы определить, в чем заключается проблема, и как лучше всего ее решить.

-1
ответ дан 2 December 2019 в 00:31
поделиться
Другие вопросы по тегам:

Похожие вопросы: