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

Вид: 11079|Ответ: 1

[Источник] MSSQL С (NOLOCK) грязным чтением

[Скопировать ссылку]
Опубликовано 2020-4-3 10:06:04 | | |
Минусы:

1. Это приведёт к грязному чтению

2. Применимо только к операторам select запросов

Плюсы:

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

2. Может использоваться для внутренних соединений

Грязное чтение: пользователь вносит модификацию в ресурс, и другой пользователь случайно читает изменённую запись, затем первый пользователь отказывается от изменения, и данные возвращаются к предыдущей модификации; эти два результата — грязное считывание.

Подробности:

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

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

Например:

Помимо простого 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





Предыдущий:Задержка между мастером и ведомым базами данных приводит к неточному разрешению запросов
Следующий:Решена проблема с тем, что Fiddler не мог сканировать локальные локальные запросы сети 127.0.0.1
Опубликовано 2020-4-5 14:21:36 |
Отказ:
Всё программное обеспечение, программные материалы или статьи, публикуемые Code Farmer Network, предназначены исключительно для учебных и исследовательских целей; Вышеуказанный контент не должен использоваться в коммерческих или незаконных целях, иначе пользователи несут все последствия. Информация на этом сайте взята из Интернета, и споры по авторским правам не имеют отношения к этому сайту. Вы должны полностью удалить вышеуказанный контент с компьютера в течение 24 часов после загрузки. Если вам нравится программа, пожалуйста, поддержите подлинное программное обеспечение, купите регистрацию и получите лучшие подлинные услуги. Если есть нарушение, пожалуйста, свяжитесь с нами по электронной почте.

Mail To:help@itsvse.com