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

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

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

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

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

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

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

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

Да, накладывает sch-s.
...
Рейтинг: 0 / 0
26.02.2019, 09:06
    #39779120
invm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
with (nolock) - преимущества и недостатки
Плюс ко всем перечисленным прелестям, можно еще и получить ошибку "Could not continue scan with NOLOCK due to SQL Server data movement".
...
Рейтинг: 0 / 0
26.02.2019, 11:22
    #39779205
Ролг Хупин
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
with (nolock) - преимущества и недостатки
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
26.02.2019, 11:27
    #39779212
TaPaK
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
with (nolock) - преимущества и недостатки
Ролг Хупин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
26.02.2019, 11:50
    #39779224
TaPaK
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
with (nolock) - преимущества и недостатки
+такая штука
https://blogs.msdn.microsoft.com/sqlserverstorageengine/2006/11/08/when-can-allocation-order-scans-be-used/

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

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

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

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

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

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

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

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

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

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

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

Это старейшая ошибка существовавшая ещё во времена 2000. Возникает при чтении NTEXT, NVARCHAR(MAX) и других блобов с NOLOCK
...
Рейтинг: 0 / 0
01.03.2019, 14:50
    #39781049
vitkhv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
with (nolock) - преимущества и недостатки
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
04.03.2019, 20:10
    #39782226
a_voronin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
with (nolock) - преимущества и недостатки
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
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / with (nolock) - преимущества и недостатки / 20 сообщений из 20, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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