Dynamisches Sperren

Wenn Sie Sperren auf niedriger Ebene verwenden, z. B. Zeilensperren, wird die Parallelität erhöht, da die Wahrscheinlichkeit geringer ist, dass zwei Transaktionen gleichzeitig Sperren für die gleichen Daten anfordern. Das Verwenden von Sperren auf niedriger Ebene erhöht außerdem die Anzahl der Sperren sowie der Ressourcen, die für deren Verwaltung erforderlich sind. Wenn Sie Tabellen- oder Seitensperren auf hoher Ebene verwenden, wird der Aufwand zwar gesenkt, jedoch auf Kosten der Parallelität.

Diagramm mit Kosten und Granularität im Vergleich

MicrosoftSQL Server Database Engine (Datenbankmodul) legt Sperren dynamisch fest, um die kosteneffektivsten Sperren zu bestimmen. Database Engine (Datenbankmodul) bestimmt beim Ausführen einer Abfrage automatisch, welche Sperren, basierend auf den Merkmalen des Schemas und der Abfrage, am sinnvollsten sind. Um beispielsweise den Aufwand für die Sperren zu senken, kann der Abfrageoptimierer festlegen, dass beim Ausführen eines Indexscans Sperren auf Seitenebene für einen Index eingerichtet werden.

Dynamische Sperren bieten die folgenden Vorteile:

  • Vereinfachte Datenbankverwaltung. Datenbankadministratoren müssen die Sperreneskalationsschwellen nicht anpassen.

  • Gesteigerte Leistung. Database Engine (Datenbankmodul) minimiert den Aufwand des Systems mithilfe von Sperren, die speziell auf die Aufgabe zugeschnitten sind.

  • Anwendungsentwickler können sich auf die Entwicklung konzentrieren. Database Engine (Datenbankmodul) passt Sperren automatisch an.

In SQL Server 2008 hat sich das Verhalten der Sperrenausweitung mit der Einführung der LOCK_ESCALATION-Option geändert. Weitere Informationen finden Sie unter der LOCK_ESCALATION-Option von ALTER TABLE.