Anfang des Inhaltsbereichs

Hintergrunddokumentation Parallelität von Sperren Dokument im Navigationsbaum lokalisieren

Die folgende Tabelle zeigt, welche Lesesperren (SHARE LOCKS) und Schreibsperren (EXCLUSIVE LOCKS) parallel existieren können.

 

Eine Transaktion hat..

 

auf einer Tabelle

auf einer Zeile

auf dem Datenbankkatalog

Eine andere Transaktion kann...

Schreibsperre

Lesesperre

Schreibsperre

Lesesperre

Schreibsperre

Lesesperre

für die Tabelle eine Schreibsperre anfordern

nein

nein

nein

nein

nein

ja

für die Tabelle eine Lesesperre anfordern

nein

ja

nein

ja

nein

ja

für irgendeine Zeile der Tabelle eine Schreibsperre anfordern

nein

nein

-

-

nein

ja

für die gesperrte Zeile eine Schreibsperre anfordern

-

-

nein

nein

-

-

für eine andere Zeile eine Schreibsperre anfordern

-

-

ja

ja

-

-

für irgendeine Zeile der Tabelle eine Lesesperre anfordern

nein

ja

-

-

nein

ja

für die gesperrte Zeile eine Lesesperre anfordern

-

-

nein

ja

-

-

für eine andere Zeile eine Lesesperre anfordern

-

-

ja

ja

-

-

die Definition der Tabelle im Datenbankkatalog ändern

nein

nein

nein

nein

nein

nein

die Definition der Tabelle im Datenbankkatalog lesen

ja

ja

ja

ja

nein

ja

In Fällen, die mit „nein“ gekennzeichnet sind, liegt eine Sperrkollision vor. Wenn eine Sperre innerhalb einer Transaktion angefordert wird, dann muss auf die Freigabe einer Sperre gewartet werden, bis eine der in der Matrix mit „ja“ gekennzeichneten Situationen vorliegt.

Außerdem gilt Folgendes:

·        Wenn für ein Datenbankobjekt keine Sperre gesetzt ist, dann kann eine Transaktion eine Lese- oder eine Schreibsperre anfordern, und das Datenbanksystem setzt die Sperre sofort.

·        Wenn eine Transaktion T1 eine Lesesperre für ein Datenbankobjekt hält und keine andere Transaktion eine Sperre für dieses Datenbankobjekt hält, dann kann Transaktion T1 eine Schreibsperre für dieses Datenbankobjekt anfordern und erhält diese sofort.

·        Wenn eine Transaktion eine Schreibsperre für ein Datenbankobjekt hält, dann kann diese Transaktion eine Lesesperre anfordern (dies ist aber nicht notwendig).

Siehe auch:

Sperren für Datenbankobjekte

Ende des Inhaltsbereichs