Kompatibilität von Sperren (Datenbankmodul)

Durch die Kompatibilität von Sperren wird gesteuert, ob mehrere Transaktionen gleichzeitig Sperren für dieselbe Ressource einrichten können. Wenn eine Ressource bereits durch eine andere Transaktion gesperrt wurde, kann eine erneute Sperranforderung nur gewährt werden, wenn der Modus der angeforderten Sperre mit dem Modus der vorhandenen Sperre kompatibel ist. Wenn der Modus der angeforderten Sperre nicht mit dem Modus der vorhandenen Sperre kompatibel ist, wartet die Transaktion, von der die neue Sperre angefordert wird, bis die vorhandene Sperre aufgehoben wird oder bis das Timeoutintervall der Sperre abgelaufen ist. So sind z. B. keine anderen Sperrmodi mit exklusiven Sperren kompatibel. Wenn eine exklusive Sperre (X) eingerichtet ist, kann eine andere Transaktion eine Sperre jeglicher Art (freigegeben, Aktualisierung oder exklusiv) für die Ressource erst dann einrichten, wenn die exklusive Sperre (X) am Ende der ersten Transaktion aufgehoben wird. Falls hingegen eine freigegebene Sperre (Shared, S) auf eine Ressource angewendet wurde, können andere Transaktionen ebenfalls eine freigegebene Sperre oder eine Aktualisierungssperre (Update, U) auf dieses Element anwenden, selbst wenn die erste Transaktion noch nicht beendet ist. Andere Transaktionen können jedoch eine exklusive Sperre erst dann einrichten, wenn die freigegebene Sperre aufgehoben wurde.

Die folgende Tabelle zeigt die Kompatibilität der am häufigsten auftretenden Sperrmodi.

 

Vorhandener erteilter Modus

 

 

 

 

 

Angeforderter Modus

IS

S

U

IX

SIX

X

Beabsichtigte gemeinsame Sperre (IS)

Ja

Ja

Ja

Ja

Ja

Nein

Gemeinsame Sperre (S)

Ja

Ja

Ja

Nein

Nein

Nein

Aktualisierung (U)

Ja

Ja

Nein

Nein

Nein

Nein

Beabsichtigte exklusive Sperre (IX)

Ja

Nein

Nein

Ja

Nein

Nein

Gemeinsame Sperre mit beabsichtigter exklusiver Sperre (SIX)

Ja

Nein

Nein

Nein

Nein

Nein

X (Exclusive)

Nein

Nein

Nein

Nein

Nein

Nein

HinweisHinweis

Eine beabsichtigte exklusive Sperre (IX) ist mit einem Sperrmodus des Typs IX kompatibel, da IX nur die Absicht zur Aktualisierung einiger statt aller Zeilen anzeigt. Andere Transaktionen, die einige der Zeilen zu lesen oder zu aktualisieren versuchen, werden ebenfalls zugelassen, sofern es sich nicht um die Zeilen handelt, die gegenwärtig von anderen Transaktionen aktualisiert werden. Wenn zwei Transaktionen versuchen, die gleiche Zeile zu aktualisieren, wird beiden Transaktionen eine IX-Sperre auf Tabellen- und Seitenebene erteilt. Einer Transaktion wird jedoch eine X-Sperre auf Zeilenebene erteilt. Die andere Transaktion muss warten, bis die Sperre auf Zeilenebene aufgehoben wird.

Vollständige Matrix der Sperrenkompatibilität

Verwenden Sie die folgende Tabelle, um die Kompatibilität aller in Microsoft SQL Server verfügbaren Sperrmodi zu ermitteln.

Diagramm mit Sperrenkompatibilitätsmatrix