powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / with (nolock) - преимущества и недостатки
20 сообщений из 20, страница 1 из 1
with (nolock) - преимущества и недостатки
    #39779058
Michail A.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день, уважаемые коллеги!

Собственно вопрос, в каких случаях в запросах оправданно использование конструкции with (nolock), а когда это может "выйти боком"?
...
Рейтинг: 0 / 0
with (nolock) - преимущества и недостатки
    #39779064
Michail A.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Интересует возможное наличие последствий помимо эффектов грязного чтения.
...
Рейтинг: 0 / 0
with (nolock) - преимущества и недостатки
    #39779067
felix_ff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Michail A.,

"оправданно" - это слишком громкое слово для грязного чтения.

В случаях когда религия не позволяет применять оптимистическое управление параллелизмом, а читатели блокируют писателей и уж очень хочется как то минимизировать издержки на такие блокировки. При этом есть оговорка: что допустимо что читатель может получить не согласованные данные, и бизнес логика учитывает такой факт.

Но это не отменяет того факта что такой подход "оправдан".
...
Рейтинг: 0 / 0
with (nolock) - преимущества и недостатки
    #39779070
felix_ff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Michail A.Интересует возможное наличие последствий помимо эффектов грязного чтения.

так там полный букет всех возможных эффектов параллелизма:

грязные чтения, повторяющиеся чтения, фантомы.
Вам сюда: https://docs.microsoft.com/ru-ru/sql/connect/jdbc/understanding-isolation-levels?view=sql-server-2017
...
Рейтинг: 0 / 0
with (nolock) - преимущества и недостатки
    #39779081
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Michail A.Собственно вопрос, в каких случаях в запросах оправданно использование конструкции with (nolock), а когда это может "выйти боком"?Оправданно, когда неважна корректность получаемых данных.
Например, если тут один раз на миллиард чтений продублируется какой то пост, или, наоборот, не покажется, то это для сайта неважно.
То есть оправданно применять для всяких обобщённых, несохраяемых, справочных, списков.
...
Рейтинг: 0 / 0
with (nolock) - преимущества и недостатки
    #39779094
Michail A.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо!

Меня также интересует следующий момент, правильно ли я понимаю, что запрос с with (nolock) на определенную таблицу блокирует изменение/удаление таблицы и ее индексов?
...
Рейтинг: 0 / 0
with (nolock) - преимущества и недостатки
    #39779096
TaPaK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Michail A.,

Да, накладывает sch-s.
...
Рейтинг: 0 / 0
with (nolock) - преимущества и недостатки
    #39779120
invm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Плюс ко всем перечисленным прелестям, можно еще и получить ошибку "Could not continue scan with NOLOCK due to SQL Server data movement".
...
Рейтинг: 0 / 0
with (nolock) - преимущества и недостатки
    #39779205
Ролг Хупин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
invmПлюс ко всем перечисленным прелестям, можно еще и получить ошибку "Could not continue scan with NOLOCK due to SQL Server data movement".

И еще плюс - это deprecated feature, не стоит привыкать к вредному

https://docs.microsoft.com/en-us/sql/database-engine/deprecated-database-engine-features-in-sql-server-2016?view=sql-server-2017
...
Рейтинг: 0 / 0
with (nolock) - преимущества и недостатки
    #39779212
TaPaK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ролг ХупинinvmПлюс ко всем перечисленным прелестям, можно еще и получить ошибку "Could not continue scan with NOLOCK due to SQL Server data movement".

И еще плюс - это deprecated feature, не стоит привыкать к вредному

https://docs.microsoft.com/en-us/sql/database-engine/deprecated-database-engine-features-in-sql-server-2016?view=sql-server-2017
стоит читать конкретно в каких случаях.
...
Рейтинг: 0 / 0
with (nolock) - преимущества и недостатки
    #39779224
TaPaK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
+такая штука
https://blogs.msdn.microsoft.com/sqlserverstorageengine/2006/11/08/when-can-allocation-order-scans-be-used/

Из практики существует возможность при хинте NOLOCK получить совсем другой(не оптимальный) план выполнения.
...
Рейтинг: 0 / 0
with (nolock) - преимущества и недостатки
    #39779239
Alexander Us
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Michail A.,

скажем, такой сценарий:

Вам срочно надо сделать запрос к боевой базе для сбора какой то статистики
Вас устраивает погрешность "измерения"

НО:
если Вы своим запросом затормозите работу приложений, более чем XX секунд,
это приведёт к немедленным жалобам на горячую линию

В таких случаях я использую

предварительную выборку части данных в tempdb (если это имеет смысл)
with (nolock)
option(maxdop 1)

хоть, возможно, и буду подвергнут критике.
...
Рейтинг: 0 / 0
with (nolock) - преимущества и недостатки
    #39779263
L_argo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот 1С во всю юзает ноулок.
Никто не умер.
...
Рейтинг: 0 / 0
with (nolock) - преимущества и недостатки
    #39779264
TaPaK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
L_argoВот 1С во всю юзает ноулок.
Никто не умер.
эталонная вещь
...
Рейтинг: 0 / 0
with (nolock) - преимущества и недостатки
    #39779383
vitkhv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
L_argoВот 1С во всю юзает ноулок.
Никто не умер.

И самое главное никаких "Could not continue scan with NOLOCK due to SQL Server data movement" никогда не было.
...
Рейтинг: 0 / 0
with (nolock) - преимущества и недостатки
    #39779386
Ролг Хупин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
L_argoВот 1С во всю юзает ноулок.
Никто не умер.

и не сел
...
Рейтинг: 0 / 0
with (nolock) - преимущества и недостатки
    #39779490
архивариус
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Michail A.Добрый день, уважаемые коллеги!

Собственно вопрос, в каких случаях в запросах оправданно использование конструкции with (nolock), а когда это может "выйти боком"?
Re: WITH(NOLOCK) - без него значительно быстрее. Странно.
...
Рейтинг: 0 / 0
with (nolock) - преимущества и недостатки
    #39779491
Фотография a_voronin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vitkhvL_argoВот 1С во всю юзает ноулок.
Никто не умер.

И самое главное никаких "Could not continue scan with NOLOCK due to SQL Server data movement" никогда не было.

Это старейшая ошибка существовавшая ещё во времена 2000. Возникает при чтении NTEXT, NVARCHAR(MAX) и других блобов с NOLOCK
...
Рейтинг: 0 / 0
with (nolock) - преимущества и недостатки
    #39781049
vitkhv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
a_voronin[
Это старейшая ошибка существовавшая ещё во времена 2000. Возникает при чтении NTEXT, NVARCHAR(MAX) и других блобов с NOLOCK

В то и дело, что NTEXT использовался для текстовых полей неограниченной длинны в версиях 8.0 и 8.1, умевших еще работать с 2000 MSSQL. NVARCHAR(MAX) повсеместно используется с 8.2 и соответственно в 8.3 в новых релизах для текстовых полей неограниченной длинны. Но с ошибкой такой я никогда не сталкивался, хотя у 1С в отчетах все c WTIH(NOLOCK).
...
Рейтинг: 0 / 0
with (nolock) - преимущества и недостатки
    #39782226
Фотография a_voronin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vitkhva_voronin[
Это старейшая ошибка существовавшая ещё во времена 2000. Возникает при чтении NTEXT, NVARCHAR(MAX) и других блобов с NOLOCK

В то и дело, что NTEXT использовался для текстовых полей неограниченной длинны в версиях 8.0 и 8.1, умевших еще работать с 2000 MSSQL. NVARCHAR(MAX) повсеместно используется с 8.2 и соответственно в 8.3 в новых релизах для текстовых полей неограниченной длинны. Но с ошибкой такой я никогда не сталкивался, хотя у 1С в отчетах все c WTIH(NOLOCK).


Репо такое
1) В первом окне пускаете в цикле запрос, который вставляет и удаляет часть данных из таблицы c NVARCHAR(MAX) , чем больше блоб тем быстрее повторите или ещё лучше мердж
2) Во втором окне пускаете чтение этого поля (допустим SELECT-INSERT во временную таблицу или LIKE по этому блобу) с NOLOCK

При параллельной работе таких двух сессий получите ошибку
...
Рейтинг: 0 / 0
20 сообщений из 20, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / with (nolock) - преимущества и недостатки
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]