Freigeben über


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 freigegebene Sperre (IS)

Ja

Ja

Ja

Ja

Ja

Nein

S (Shared)

Ja

Ja

Ja

Nein

Nein

Nein

U (Update)

Ja

Ja

Nein

Nein

Nein

Nein

Beabsichtigte exklusive Sperre (IX)

Ja

Nein

Nein

Ja

Nein

Nein

Freigegebene 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 versuchen, einige der Zeilen zu lesen oder zu aktualisieren, werden ebenfalls zugelassen, sofern es sich nicht um dieselben Zeilen handelt, die von anderen Transaktionen aktualisiert werden.

Vollständige Matrix der Sperrenkompatibilität

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

Diagramm mit Sperrenkompatibilitätsmatrix