Тази статия е огледална статия за машинен превод, моля, кликнете тук, за да преминете към оригиналната статия.

Изглед: 10821|Отговор: 0

[Източник] SQL SELECT

[Копирай линк]
Публикувано в 8.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