Минуси:
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
|