Udostępnij za pośrednictwem


Blokowanie w aparat bazy danych

Locking is a mechanism used by the Microsoft SQL Server Database Engine to synchronize access by multiple users to the same piece of data at the same time.

Przed transakcją nabywa zależność od bieżącego stanu fragment danych, takich jak czytanie lub modyfikowanie danych, jej musi ochrony przed skutki inna transakcja modyfikowania tych samych danych.Transakcja wykonuje to zadanie przez żądanie blokada na fragment danych.Blokady mają różne tryby, takich jak udostępnione lub wyłączności.Tryb blokada definiuje poziom zależności transakcji jest na danych.Żadna transakcja nie może uzyskać blokada, które byłoby w konflikcie z trybem blokada już przyznane na tych danych do innej transakcji.Jeśli transakcja żądania trybu blokada, który powoduje konflikt z blokada, które już udzielono na tych samych danych w wystąpieniu programu Database Engine zatrzyma żądającego transakcji aż do chwili zwolnienia blokada pierwszej.

Transakcja modyfikuje fragment danych, posiada blokadę ochrona modyfikacji aż do zakończenia transakcji.Jak długo transakcji odczytać ręcznych blokad nabyte w celu ochrony operacji zależy od ustawień poziom izolacji transakcji.Wszystkie blokady przechowywane przez transakcję są zwalniane po zakończeniu transakcji (albo zatwierdzane lub toczy się ponownie).

Aplikacje nie zazwyczaj żądają blokad bezpośrednio.blokada są zarządzane wewnętrznie przez część Database Engine nazywany blokada menedżera. Gdy wystąpienie Database Engine procesy Transact-SQL Instrukcja, Database Engine procesor kwerend określa zasoby, które mają być dostępne. Procesor kwerend określa, jakiego typu blokady są wymagane do ochrony poszczególnych zasób w zależności od typu dostępu i ustawienie poziom izolacji transakcji.Procesor kwerend następnie żąda blokada odpowiednie od Menedżera blokada.Menedżer blokad udziela blokad występują nie konflikty blokada przechowywane przez inne transakcje.

Poniższa tabela zawiera listę tematów opisujących główne pojęcia blokowania.

Temat

Description

Lock Granularity and Hierarchies

Blokady mogą być wymagane dla różnych typów zasobów, takich jak wiersze, strony, indeksów, tabel lub baz danych.Niektóre operacje wymagają wprowadzania blokad na wielu poziomach rozdrobnienia, tworzących hierarchię blokad.

Tryby blokada

Blokady mają różne tryby, które określają poziom dostępu ma inne transakcje do zablokowanej zasób.

Lock Compatibility (Database Engine)

Wielu transakcji może uzyskać blokad jednocześnie dla tego samego zasób, jeśli ich trybów blokada są zgodne.Jeżeli transakcja trybu blokada, który powoduje konflikt z istniejące blokada, transakcji jest wstrzymana do momentu pierwszego blokada zostaje zwolniony.

Key-Range Locking

Blokowanie zakres kluczy umożliwia transakcji używany jest poziom izolacji można zapobiec fantomu wstawia i usuwa.

eskalacja blokad (aparat bazy danych)

Jeśli transakcja pobrania dużej liczby blokad wiersza lub strona, Database Engine może udzielić blokada tabela, a następnie zwolnij wszystkie blokada niższego poziom, aby zminimalizować obciążenie blokada.

Dynamic Locking

The Database Engine can dynamically choose the poziom of blokada ziarnistość based on the optimizer's estimate of the number of rows a Transact-SQL instrukcja will reference.

Wyświetlanie informacji o blokowanie (aparat bazy danych)

The Database Engine and its associated APIs provide several mechanisms for displaying information about the locks currently held in an wystąpienie or a database.

Deadlocking

Zakleszczenia występują wtedy, gdy dwa zadania zablokować z sobą trwale, ponieważ każde zadanie jest blokada do zasób, wymagane przez inne zadania.