NOLOCK против уровня изоляции транзакции - PullRequest
19 голосов
/ 19 июня 2009

В чем разница между использованием "УСТАНОВИТЬ УРОВЕНЬ ИЗОЛЯЦИИ СДЕЛКИ СДЕЛКИ СЧИТАЕТСЯ НЕЗАКУПЕННЫМ" и NOLOCK? Один лучше другого?

Ответы [ 4 ]

22 голосов
/ 19 июня 2009

Это одно и то же, просто по-другому. NOLOCK размещается отдельно для каждой таблицы, а SET Transaction... может быть размещен как блок.

6 голосов
/ 19 июня 2009

NOLOCK является подсказкой запроса и, как таковая, применяется только к таблице спецификаций в запросе, в котором она указана.

Установка уровня изоляции транзакции применяется ко всему коду, выполняемому внутри текущего соединения или до тех пор, пока он не будет явно изменен.

Чтобы уточнить, функционально уровень изоляции на работе такой же, но охват, который охватывается, может и не быть.

4 голосов
/ 19 июня 2009

См. , который отвечает несколько часов назад, на вопрос Операторы SQL Server SELECT, вызывающие блокировку .

Цитата Ремус Русану :

SELECT может блокировать обновления. Правильно спроектированная модель данных и запрос вызовут только минимальную блокировку и не будут проблемой. «Обычная» подсказка WITH NOLOCK - почти всегда неправильный ответ. Правильный ответ - настроить ваш запрос, чтобы он не сканировал огромные таблицы.

Если запрос неуправляем, то вам следует сначала рассмотреть уровень SNAPSHOT ISOLATION, во-вторых, вам следует рассмотреть возможность использования DATABASE SNAPSHOTS, а последний параметр должен быть DIRTY READS (и лучше изменить уровень изоляции, чем использовать NOLOCK HINT). Обратите внимание, что грязные чтения, как ясно указывает название, будут возвращать противоречивые данные (например, ваш общий лист может быть несбалансированным).

Другие ответы также могут вам помочь.

1 голос
/ 19 июня 2009

Они имеют одинаковый эффект, только один используется в качестве подсказки блокировки (nolock), а другой - для области действия соединения.

Будьте осторожны с любым из них - грязное чтение может быть очень плохой вещью в зависимости от вашего приложения. Чтение одной и той же записи дважды или пропущенная запись из-за перемещения страницы может очень запутать пользователей ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...