Tryby blokada
The Microsoft SQL Server Database Engine locks resources using different lock modes that determine how the resources can be accessed by concurrent transactions.
W poniższej tabela przedstawiono trybów blokada zasób Database Engine używa.
Tryb blokada |
Description |
---|---|
Udostępnione (S) |
Używane dla operacji odczytu, które nie zmienić lub zaktualizować danych, takich jak instrukcja SELECT. |
Aktualizacja (U) |
Używane dla zasobów, które mogą być aktualizowane.Zapobiega wspólnej formy zakleszczenie, który występuje w sytuacji, gdy wiele sesji są odczytu, blokowania i potencjalnie później aktualizacji zasobów. |
Wyłączne (X) |
Używane dla operacji zmiany danych, takich jak INSERT, UPDATE lub DELETE.Daje pewność, że wiele aktualizacji nie można dokonać z tego samego zasób w tym samym czasie. |
Metoda konwersji |
Używany do ustanawiania hierarchii blokada.Typy konwersji blokad: Opcje współużytkowane (IS), opcje wyłączności (IX) i udostępniane z zamiarem wyłączności (SIX). |
Schemat |
Używane, gdy jest wykonywana operacja zależne od schematu tabela.Typy schematów blokad: modyfikacja schematu (SCH-M) i stabilność schematu (SCH-S). |
Aktualizacja zbiorcza (BU) |
Używane podczas zbiorczej kopiowania danych do tabela oraz TABLOCK wskazówka jest określona. |
Klucz — zakres |
Chroni zakres wierszy odczytywany przez kwerendę korzystając z poziom izolacji transakcji możliwy do serializacji.Daje pewność, że inne transakcje nie może wstawić wiersze, które będzie kwalifikują się kwerend dotyczących transakcji możliwy do serializacji, jeśli kwerendy zostały ponownie uruchomione. |
Blokowanie udostępnionych
Udostępnione blokady (S) umożliwiają jednoczesnych transakcji do odczytu (SELECT) zasób w obszarze Współbieżność pesymistyczna formantu.Aby uzyskać więcej informacji zobaczTypy kontroli współbieżność.Nie inne transakcje mogą modyfikować dane, gdy istnieje udostępnionego blokady (S) dla danego zasób.Udostępnione blokady (S) do zasób są zwalniane natychmiast po zakończeniu operacji odczytu, chyba że poziom izolacji transakcji jest ustawiony na Odczyt powtarzalny lub wyższą, lub wskazówki blokowania służy do zachowania udostępnionego blokady (S) w czasie trwania transakcji.
Aktualizowanie blokady
Blokady aktualizacji (U) zapobiega wspólnej formy zakleszczenie.Odczyt powtarzalny lub możliwy do serializacji transakcji transakcji odczytuje dane, pobieranie udostępnionych blokady (S) dla zasób (strona lub wiersza), a następnie modyfikującą dane, które wymaga konwersji blokady blokada wyłączności (X).Jeśli dwie transakcje nabycia udostępnionych trybu blokad dla zasób, a następnie ponów próbę aktualizacji danych jednocześnie, jednej transakcji podejmuje próbę konwersji blokady blokada wyłączności (X).Konwersja Blokada udostępnionych tryb do wyłączności musi czekać, ponieważ blokada na wyłączność dla jednej transakcji nie jest zgodny z Blokada udostępnionych trybu innych transakcji; występuje oczekiwania blokady.Drugi transakcji próbuje uzyskać blokada wyłączności (X), jego aktualizacji.Ponieważ oba transakcji jest konwertowane na wyłącznej (blokada X), są one każdego oczekiwanie na inne transakcje zwolnić jego blokadę udostępnionych tryb Zakleszczenie występuje.
Aby tego uniknąć potencjalnego zakleszczenie, są stosowane blokady aktualizacji (U).Tylko jedna transakcja można uzyskać blokada aktualizacji (U) do zasób w czas.Jeśli transakcja modyfikuje zasób, blokada aktualizacji (U) jest konwertowany na blokada wyłączności (X).
Wyłącznej blokady
Blokady wyłączności (X) uniemożliwić dostęp do zasób przez jednoczesne transakcje.W przypadku blokada wyłączności (X) innych transakcji nie można modyfikować danych; można wykonać operacji odczytu umieścić tylko w przypadku stosowania wskazówka NOLOCK lub odczytać poziom izolacji nieprzydzielonych.
Instrukcje zmiany danych, takie jak INSERT, UPDATE i DELETE połączenie obu modyfikacji i operacji odczytu.Instrukcja najpierw wykonuje operacje odczytu w celu uzyskania danych przed wykonaniem operacji wymaganych modyfikacji.Instrukcje modyfikacji danych, w związku z tym, zazwyczaj żądanie obu udostępnione blokady i wyłącznej blokady.Na przykład instrukcja UPDATE może zmodyfikować wierszy w jednej tabela oparta na sprzężeniu z innej tabela.W takim przypadek blokad udostępnionego żądania instrukcja UPDATE dla wierszy odczytu w tabela łączyć wraz z żądaniem wyłącznej blokady zaktualizowanych wierszy.
Blokowanie konwersji
The Database Engine uses intent locks to protect placing a shared (S) blokada or exclusive (X) blokada on a zasób lower in the blokada hierarchy. blokada konwersji są o nazwie konwersji blokad, ponieważ zdobyli przed blokada w niższej poziom i w związku z tym sygnału zamiarem umieść blokad w niższej poziom.
Blokady konwersji służą dwóch celów:
Aby zapobiec inne transakcje modyfikację wyższego poziom zasób w taki sposób, że unieważniłaby blokada na niższym poziomie.
Aby zwiększyć wydajność Database Engine wykrywanie konfliktów blokada wyższego poziom rozdrobnienia.
Na przykład udostępnionych blokada zamierzona wymagane jest poziom tabela przed udostępnionego blokada (S) są wymagane na stronach lub wierszy wewnątrz tabela.Ustawienie konwersji blokada poziom tabela zapobiega przez inną transakcję z później pobieranie blokadę wyłączności (X) w tabela zawierającej tę strona.blokada w celu zwiększenia wydajności, ponieważ Database Engine sprawdza, czy w celu blokada tylko poziom tabela w celu określenia transakcji można bezpiecznie uzyskać blokada w tej tabela. Spowoduje to usunięcie zapotrzebowania do zbadania każdego wiersza lub strona blokada w tabela, aby określić, jeśli transakcja może blokada całą tabela.
Blokady konwersji obejmują opcje współużytkowane (IS), opcje wyłączności (IX) i udostępniane z zamiarem wyłączności (SIX).
Tryb blokada |
Description |
---|---|
Opcje współużytkowane (IS) |
Chroni żądanego lub nabyte udostępnionego blokad niżej w hierarchii zasobów niektóre (ale nie wszystkie). |
Metoda konwersji wyłączności (IX) |
Chroni żądanego lub nabyte wyłączne blokad niżej w hierarchii zasobów niektóre (ale nie wszystkie).IX jest podzbiorem IS, a także chroni żądanie blokady udostępnionych w dolnym poziom zasobów. |
Współużytkowane z zamiarem wyłączności (SIX) |
Chroni żądanego lub nabyte udostępnionego blokad dla wszystkich zasobów niżej w hierarchii i opcje wyłącznej blokady na niektóre (ale nie wszystkie) o niższej poziom zasobów.Równoczesne blokad IS na najwyższym poziomie zasób są dozwolone.Na przykład pobieranie SIX blokadę tabela także nabywa konwersji wyłącznej blokada na stronach, które należy zmodyfikować i wyłączne blokad dla zmodyfikowanych wierszy.Może istnieć tylko jeden SIX zablokować dla zasób w tym samym czasie, zapobieganie aktualizacji do zasób przez inne transakcje, mimo że inne transakcje mogą odczytywać zasób niżej w hierarchii uzyskując IS blokada poziom tabela. |
Aktualizacja konwersji (JM) |
Chroni blokad żądanej albo pobranych aktualizacji dla wszystkich zasobów znajdujące się w hierachy.Blokady IU są używane tylko strona zasobów.Blokady IU są konwertowane na blokad IX jeśli odbywa się operacji aktualizacji. |
Aktualizacja konwersji udostępnionego (SIU) |
Połączenie S i IU blokady z tytułu nabycia te blokady oddzielnie i jednocześnie posiadających obu blokad.Na przykład transakcji wykonuje kwerendę z podpowiedzi PAGLOCK, a następnie wykonuje operację aktualizacji.Kwerendy o wskazówka PAGLOCK uzyskuje blokadę S i operacji aktualizowania uzyskuje blokadę IU. |
Aktualizacja konwersji wyłączności (UIX) |
Kombinacja U i IX blokady z tytułu nabycia te blokady oddzielnie i jednocześnie posiadających obu blokad. |
Blokowanie schematu
The Database Engine uses schema modification (Sch-M) locks during a tabela definicja danych language (DDL) operation, such as adding a kolumna or dropping a tabela. Czasie, gdy jest ono przechowywane blokada SCH-M uniemożliwia jednoczesne dostęp do tabela.Oznacza to, że blokada SCH M blokuje wszystkie operacje zewnętrznych aż do chwili zwolnienia blokady.
Niektóre dane manipulacji języka (DML) operacje, takie jak obcinania tabela stosować blokady SCH-M, aby uniemożliwić dostęp do tabel, których dotyczy problem przez równoczesne wykonywanie operacji.
The Database Engine uses schema stability (Sch-S) locks when compiling and executing queries.SCH S blokad nie należy blokować wszystkie blokady transakcyjnych, włącznie z blokowaniem wyłączności (X).Dlatego też inne transakcje, łącznie z zawierającymi X blokad dla tabela, kontynuować działanie podczas kompilowania kwerendy.Jednak równoczesne operacje DDL i równoczesne operacje DML uzyskać blokady SCH-M, nie można wykonać w tabela.
Zbiorcza aktualizacja blokady
The Database Engine uses bulk update (BU) locks when bulk copying data into a tabela, and either the TABLOCK hint is specified or the tabela blokada on ładowanie zbiorcze tabela option is zestaw using sp_tableoption.Zbiorcza aktualizacja (BU) blokad zezwala na wiele wątków jednocześnie zbiorczej ładowania danych do tej samej tabela, jednocześnie uniemożliwiając innym procesom, które nie są ładowanie zbiorcze danych z dostęp do tabela.
Blokowanie zakres klucz
Zakres klawiszy blokad ochrony zakres wierszy niejawnie zawartych zestaw rekordów odczytywany przez Transact-SQL Instrukcja podczas korzystania z poziom izolacji transakcji możliwy do serializacji. Blokowanie zakres klucz chroni fantomu odczytów.Przez ochronę zakresów kluczy między wierszami, również zapobiega fantomu wstawienia lub usunięcia do zestaw rekordów dostępne dla transakcji.