Ten artykuł jest lustrzanym artykułem tłumaczenia maszynowego, kliknij tutaj, aby przejść do oryginalnego artykułu.

Widok: 8936|Odpowiedź: 0

BLOKADY SQL NOLOCK, HOLDLOCK, UPDLOCK, TABLOCK, TABLOCKX

[Skopiuj link]
Opublikowano 20.07.2016 14:02:51 | | |

NOLOCK
Po wybraniu tej opcji SQL Server odczytuje lub modyfikuje dane bez żadnych blokad. W takim przypadku użytkownik może odczytać dane z Transakcji Niezobowiązanej lub Rollback, znanych jako "brudne dane".

HOLDLOCK
Gdy ta opcja zostanie wybrana, SQL Server utrzymuje tę wspólną blokadę aż do końca całej transakcji, nie zwalniając jej po drodze.

UPDLOCK
Po wybraniu tej opcji SQL Server używa blokady modyfikacji zamiast współdzielonej podczas odczytu danych i utrzymuje tę blokadę do końca całej transakcji lub polecenia. Ta opcja zapewnia, że wiele procesów może jednocześnie odczytywać dane, ale tylko ten proces może je modyfikować.

TABLOCK
Gdy ta opcja zostanie wybrana, SQL Server umieszcza wspólną blokadę na całej tabeli aż do zakończenia polecenia. Ta opcja zapewnia, że inne procesy mogą jedynie odczytywać i nie modyfikować danych.

PAGLOCK
Ta opcja jest domyślna, a po wybraniu SQL Server korzysta z blokady współdzielonej strony.

TABLOCKX (Ekskluzywny zamek stołowy)
Po wybraniu tej opcji SQL Server nałoży blokadę na całą tabelę do czasu zakończenia polecenia lub transakcji. To uniemożliwi innym procesom odczytywanie lub modyfikowanie danych w tabeli.

HOLDLOCK przechowuje współdzieloną blokadę do czasu zakończenia całej transakcji i powinien zostać zwolniony, gdy zablokowany obiekt nie jest potrzebny, równy poziomowi izolacji transakcji SERIALIZABLE

Instrukcja NOLOCK jest wykonywana bez wydawania współdzielonej blokady, co pozwala na brudne odczyty, co odpowiada poziomowi izolacji transakcji READ UNCOMMITTED

PAGLOCK używa wielu zamków stron, gdzie używa się jednej blokady stołowej

READPAST pozwala serwerowi sql pomijać zablokowane linie i wykonywać transakcje, a dla poziomów izolacji transakcji READ Noncommitted pomija tylko blokady RID, a nie blokady stron, stref i tabel

ROWLOCK wymusza stosowanie rowlocków

TABLOCKX wymusza stosowanie wyłącznej blokady na poziomie tabeli, która uniemożliwia innym transakcjom korzystanie z tabeli podczas transakcji

UPLOCK wymusza użycie aktualizacji podczas odczytu tabeli bez wspólnego zamknięcia

Uwaga: Różnica między blokowaniem tabeli w bazie danych
SELECT * FROM table WITH (HOLDLOCK) Inne transakcje mogą odczytywać tabelę, ale nie mogą ich aktualizować ani usuwać
WYBIERZ * Z TABELI Z (TABLOCKX) Inne transakcje nie mogą odczytywać, aktualizować i usuwać tabel




Poprzedni:Blokady, nieczytelne odczyty, niepowtarzalne odczyty i fałszywe odczyty w SQL
Następny:SQL Server analizuje martwy zamek i go zwalnia
Zrzeczenie się:
Całe oprogramowanie, materiały programistyczne lub artykuły publikowane przez Code Farmer Network służą wyłącznie celom edukacyjnym i badawczym; Powyższe treści nie mogą być wykorzystywane do celów komercyjnych ani nielegalnych, w przeciwnym razie użytkownicy ponoszą wszelkie konsekwencje. Informacje na tej stronie pochodzą z Internetu, a spory dotyczące praw autorskich nie mają z nią nic wspólnego. Musisz całkowicie usunąć powyższą zawartość z komputera w ciągu 24 godzin od pobrania. Jeśli spodoba Ci się program, wspieraj oryginalne oprogramowanie, kup rejestrację i korzystaj z lepszych, autentycznych usług. W przypadku naruszenia praw prosimy o kontakt mailowy.

Mail To:help@itsvse.com