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

Dlaczego warto korzystać z poziomu izolacji ODCZYTAJ NIEZAANGAŻOWANE?

Ten poziom izolacji umożliwia brudne odczyty. Jedna transakcja może zawierać niezatwierdzone zmiany wprowadzone przez inną transakcję.

Aby utrzymać najwyższy poziom izolacji, DBMS zwykle blokuje dane, co może skutkować utratą współbieżności i wysokim obciążeniem związanym z blokowaniem. Ten poziom izolacji rozluźnia tę właściwość.

Możesz zapoznać się z artykułem Wikipedii na temat READ UNCOMMITTED po kilka przykładów i dalszą lekturę.

Możesz również zainteresować się artykułem na blogu Jeffa Atwooda o tym, jak on i jego zespół rozwiązali problem impasu we wczesnych dniach Stack Overflow. Według Jeffa:

Ale czy nolock? niebezpieczne? Czy możesz zakończyć odczytywanie nieprawidłowych danych z read uncommitted? na? Tak, teoretycznie. Nie zabraknie astronautów zajmujących się architekturą baz danych, którzy zaczynają rzucać na ciebie nauki o kwasie i uruchamiają alarm przeciwpożarowy w budynku, gdy powiesz im, że chcesz spróbować nolock .To prawda:teoria jest przerażająca. Ale oto, co myślę:"W teorii nie ma różnicy między teorią a praktyką. W praktyce jest."

Nigdy nie polecałbym używania nolock jako ogólne „dobre na to, co Ci dolega” poprawka oleju węża na wszelkie problemy z blokadą bazy danych, które możesz mieć. Powinieneś najpierw spróbować zdiagnozować źródło problemu.

Ale w praktyce dodanie nolock do zapytań, o których absolutnie wiesz, że są proste, proste sprawy tylko do odczytu nigdy nie wydają się prowadzić do problemów... Tak długo, jak wiesz, co robisz.

Jedna alternatywa dla READ UNCOMMITTED Poziom, który warto rozważyć, to READ COMMITTED SNAPSHOT . Cytując ponownie Jeffa:

Migawki opierają się na całkowicie nowej metodzie śledzenia zmian danych… to coś więcej niż tylko niewielka logiczna zmiana, wymaga od serwera fizycznej obsługi danych w inny sposób. Po włączeniu tej nowej metody śledzenia zmian danych tworzy kopię lub migawkę każdej zmiany danych. Odczytując te migawki zamiast danych na żywo w czasie rywalizacji, blokady współdzielone nie są już potrzebne podczas odczytów, a ogólna wydajność bazy danych może wzrosnąć.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak sprawdzić zgodność bazy danych SQL Server po przestarzałej funkcji sp_dbcmptlevel?

  2. Funkcja bezpieczeństwa Spotlight Cloud — usuń literały

  3. SQL Server:Czy można wstawiać do dwóch tabel jednocześnie?

  4. Jak usunąć duże dane tabeli w SQL bez logowania?

  5. Jak działa funkcja TRANSLATE() w programie SQL Server (T-SQL)