Sperrengranularität und -hierarchien

Microsoft SQL Server Database Engine (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 Database Engine (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.

Database Engine (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 Database Engine (Datenbankmodul) gegebenenfalls freigegebene Sperren für Spalten und beabsichtigt-freigegebene Sperren für die Seiten und Tabellen einrichten.

Die folgende Tabelle zeigt die Ressourcen, die Database Engine (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 eine B-Struktur (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.

HinweisHinweis

HoBT und TABLE-Sperren können durch die LOCK_ESCALATION-Option von ALTER TABLE beeinflusst werden.