Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Efekt podpowiedzi NOLOCK w instrukcjach SELECT

1) Tak , wybierz z NOLOCK zakończy się szybciej niż normalny wybór.

2) Tak , wybierz z NOLOCK pozwoli innym zapytaniom na tabelę, której dotyczy, zakończyć się szybciej niż normalny wybór.

Dlaczego miałoby to być?

NOLOCK zazwyczaj (w zależności od silnika bazy danych) oznacza, że ​​daj mi swoje dane i nie obchodzi mnie, w jakim są stanie, i nie przejmuj się trzymaniem ich nieruchomo podczas czytania z nich. To wszystko jest jednocześnie szybsze, mniej zasobochłonne i bardzo niebezpieczne.

Powinieneś być ostrzeżony, aby nigdy nie wykonywać aktualizacji lub wykonywać niczego krytycznego dla systemu lub tam, gdzie wymagana jest absolutna poprawność przy użyciu danych pochodzących z NOLOCK czytać. Jest całkowicie możliwe, że te dane zawierają wiersze, które zostały usunięte podczas wykonywania zapytania lub które zostały usunięte w innych sesjach, które nie zostały jeszcze sfinalizowane. Możliwe, że te dane zawierają wiersze, które zostały częściowo zaktualizowane. Możliwe, że te dane zawierają rekordy, które naruszają ograniczenia klucza obcego. Możliwe, że te dane wykluczają wiersze, które zostały dodane do tabeli, ale jeszcze nie zostały zatwierdzone.

Naprawdę nie masz możliwości sprawdzenia, jaki jest stan danych.

Jeśli próbujesz uzyskać takie rzeczy, jak liczba wierszy lub inne dane podsumowujące, w których dopuszczalny jest pewien margines błędu, wtedy NOLOCK to dobry sposób na zwiększenie wydajności tych zapytań i uniknięcie ich negatywnego wpływu na wydajność bazy danych.

Zawsze używaj NOLOCK podpowiadaj z dużą ostrożnością i traktuj wszelkie zwracane dane podejrzliwie.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. CAST i IsNumeric

  2. Edytuj wiersze / rekordy tabeli w SQL Server Management Studio (SSMS) — samouczek SQL Server / samouczek TSQL, część 18

  3. Jak uzyskać pierwszą i ostatnią datę bieżącego roku?

  4. Kiedy musimy używać NVARCHAR/NCHAR zamiast VARCHAR/CHAR w SQL Server?

  5. Jak zmienić nazwę bazy danych SQL Server za pomocą T-SQL