Эта статья является зеркальной статьёй машинного перевода, пожалуйста, нажмите здесь, чтобы перейти к оригиналу.

Вид: 10821|Ответ: 0

[Источник] sql SELECT

[Скопировать ссылку]
Опубликовано 08.01.2016 17:58:31 | | |

Раньше я видел, как мои старшие разработчики используют WITH (NOLOCK) при запросах в SQL Server и удивляюсь, почему они это делают. Теперь я изучил этот вопрос и понял, что он полезен для повышения производительности при выполнении запроса. Однако есть и недостаток его использования. Недостаток в том, что человек может не быть уверен, что получает данные, которые сейчас обновляются в таблице, то есть без защиты от блокировки нельзя гарантировать, что данные не обновляются изменяется во время выполнения запроса. Я перешёл по этой ссылке и нашёл её довольно полезной.

Для повышения производительности SQL-запросов, как правило, первым делом является создание индекса. Фактически, помимо создания индексов, при размещении SQL-команд добавление раздела WITH (NOLOCK) в синтаксис может улучшить явление LOCK-а наборов данных в среде с большим количеством онлайн-запросов, тем самым повышая производительность запросов.

Однако стоит отметить, что SQL SELECT с (NOLOCK) может вызывать грязное чтение.

Например:




Потому что SQL Server выполняет соответствующую проверку согласованности блокировки. Чтобы повысить общую производительность запросов к базе данных, добавьте WITH (NOLOCK) в конец имени таблицы в синтаксисе SELECT, хотя (NOLOCK) тоже приемлемо, но Microsoft всё равно рекомендует добавить WITH.

Помимо простого SELECT, можно использовать синтаксис SELECT с JOIN. Но команды DELETE, INSERT, UPDATE и другие требующие транзакций — это плохо...

Некоторые файлы говорят, что эффективность SQL запросов может быть увеличена на 33% с помощью WITH (NOLOCK).
Добавление WITH (NOLOCK) сообщает SQL Server, что наша команда SELECT не обязана учитывать состояние блокировки транзакции текущей таблицы, поэтому производительность значительно улучшится, а феномен блокировки системы баз данных значительно уменьшится (включая мёртвую блокировку).

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

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

Если не нужно учитывать транзакции, WITH (NOLOCK) может быть полезным справочником.

Примечание 1: С ( < table_hint > )
Задаёт сканирование таблицы, один или несколько индексов, используемых оптимизатором запросов,
Или через оптимизатор запросов, чтобы использовать эту таблицу данных и использовать режим блокировки для этого оператора.

Примечание 2: WITH (NOLOCK) эквивалентен READ UNCOMMITTED

Наконец, давайте поговорим о нескольких небольших отличиях между nolock и with(nolock):
1: В SQL05 поддерживаются синонимы только с (nolock);
2: с (nolock) записывается очень просто, а затем указывается индекс.
При запросе операторов между серверами нельзя использовать только с (nolock), только nolock
При запросе на одном сервере можно использовать как с (nolock), так и с nolock
Как что
SQL-код
select * из [IP].a.dbo.table1 с (nolock) Это вызовет ошибку select * из a.dbo.table1 с (nolock) Это сработает




Предыдущий:C# скрывает среднюю цифру ID-номера
Следующий:jQuery загружает JS с помощью ajax
Отказ:
Всё программное обеспечение, программные материалы или статьи, публикуемые Code Farmer Network, предназначены исключительно для учебных и исследовательских целей; Вышеуказанный контент не должен использоваться в коммерческих или незаконных целях, иначе пользователи несут все последствия. Информация на этом сайте взята из Интернета, и споры по авторским правам не имеют отношения к этому сайту. Вы должны полностью удалить вышеуказанный контент с компьютера в течение 24 часов после загрузки. Если вам нравится программа, пожалуйста, поддержите подлинное программное обеспечение, купите регистрацию и получите лучшие подлинные услуги. Если есть нарушение, пожалуйста, свяжитесь с нами по электронной почте.

Mail To:help@itsvse.com