Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Ефект на подсказката NOLOCK в операторите SELECT

1) Да , изберете с NOLOCK ще завърши по-бързо от обикновения избор.

2) Да , изберете с NOLOCK ще позволи на други заявки към извършената таблица да завършат по-бързо от нормалния избор.

Защо би било това?

NOLOCK обикновено (в зависимост от вашия DB двигател) означава да ми дадете вашите данни и не ме интересува в какво състояние са и не се притеснявайте да го държите неподвижно, докато четете от него. Всичко е наведнъж по-бързо, по-малко ресурсоемко и много опасно.

Трябва да бъдете предупредени никога да не правите актуализация от или да извършвате нещо критично за системата или където се изисква абсолютна коректност с помощта на данни, произхождащи от NOLOCK Прочети. Напълно възможно е тези данни да съдържат редове, които са били изтрити по време на изпълнението на заявката или които са били изтрити в други сесии, които все още не са финализирани. Възможно е тези данни да включват редове, които са били частично актуализирани. Възможно е тези данни да съдържат записи, които нарушават ограниченията за външния ключ. Възможно е тези данни да изключват редове, които са били добавени към таблицата, но тепърва трябва да бъдат записани.

Наистина нямате начин да разберете какво е състоянието на данните.

Ако се опитвате да получите неща като брой редове или други обобщени данни, при които някаква граница на грешка е приемлива, тогава NOLOCK е добър начин за повишаване на производителността за тези заявки и избягване на тяхното отрицателно въздействие върху производителността на базата данни.

Винаги използвайте NOLOCK подсказвайте с голямо внимание и третирайте подозрително всички данни, които връща.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Нулиране на AutoIncrement в SQL Server след изтриване

  2. SQL Server 2016 – Въведение в Stretch база данни

  3. Как да върнете подниз от низ в SQL Server с помощта на функцията SUBSTRING().

  4. SQL NVARCHAR и VARCHAR граници

  5. Нарушение на ограничението UNIQUE KEY на INSERT WHERE COUNT(*) =0 на SQL Server 2005