Sperrengranularität und -hierarchien
Microsoft SQL Server-Datenbankmodul verwendet multigranulare Sperren, die es ermöglichen, dass unterschiedliche Typen von Ressourcen von einer Transaktion gesperrt werden. Um die Kosten für das Sperren zu minimieren, sperrt Datenbankmodul automatisch Ressourcen auf einer für die Aufgabe geeigneten Stufe. Bei Verwendung von Sperren mit differenzierterer Granularität, z. B. Sperren für Zeilen, steigt die Parallelität, aber der Verwaltungsaufwand ist größer, da mehr Sperren aufrechterhalten werden müssen, wenn viele Zeilen gesperrt werden. Die Verwendung von Sperren mit gröberer Granularität, z. B. Sperren für Tabellen, wirkt sich nachteilig auf die Parallelität aus, da durch das Sperren einer gesamten Tabelle der Zugriff auf alle Teile der Tabelle für andere Transaktionen eingeschränkt wird. Der Verwaltungsaufwand nimmt jedoch ab, da weniger Sperren aufrechterhalten werden müssen.
Datenbankmodul muss häufig Sperren auf einer höheren Granularitätsebene einrichten, um eine Ressource vollständig zu schützen. Diese Gruppe von Sperren auf mehreren Granularitätsebenen wird als Sperrenhierarchie bezeichnet. Um z. B. das Lesen eines Indexes vollständig zu schützen, muss eine Instanz von Datenbankmodul gegebenenfalls gemeinsame Sperren für Spalten und beabsichtigt-gemeinsame Sperren für die Seiten und Tabellen einrichten.
Die folgende Tabelle zeigt die Ressourcen, die Datenbankmodul sperren kann.
Ressource | Beschreibung |
---|---|
RID |
Ein Zeilenbezeichner, der verwendet wird, um eine einzelne Zeile in einem Heap zu sperren. |
KEY |
Eine Zeilensperre in einem Index, die verwendet wird, um Schlüsselbereiche in serialisierbaren Transaktionen zu schützen. |
PAGE |
Eine 8-KB-Seite in einer Datenbank, z. B. Daten- oder Indexseiten. |
EXTENT |
Eine zusammenhängende Gruppe von acht Seiten, z. B. Datenseiten oder Indexseiten. |
HOBT |
Ein Heap oder eine B-Struktur. Eine Sperre, die einen Index oder den Heap von Datenseiten in einer Tabelle schützt, die keinen gruppierten Index besitzt. |
TABLE |
Die vollständige Tabelle mit sämtlichen Daten und Indizes. |
FILE |
Eine Datenbankdatei. |
APPLICATION |
Eine von der Anwendung angegebene Ressource. |
METADATA |
Metadatensperren. |
ALLOCATION_UNIT |
Eine Zuordnungseinheit. |
DATABASE |
Die gesamte Datenbank. |
Siehe auch
Konzepte
Sperrmodi
Kompatibilität von Sperren (Datenbankmodul)