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 |
Hinweis |
---|
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.