Stichpunkte von den Vorlesungsfolien

Werbung
Sperrverfahren
Marc Monecke
[email protected]
Praktische Informatik
Fachbereich Elektrotechnik und Informatik
Universität Siegen, D-57068 Siegen
2. Juli 2003
Inhaltsverzeichnis
1 Einleitung und Motivation
2 Serialisierbarkeit
2.1 Concurrency Control
2.2 Serialisierbarkeit . .
2.3 Konfliktfreiheit . . .
2.4 On-line Scheduler . .
1
.
.
.
.
1
1
1
2
2
3 Sperrverfahren
3.1 Wechselseitiger Ausschluß . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.2 Sperrmodi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.2.1 Schreib- und Lesesperren . . . . . . . . . . . . . . . . . . . . . . . . . . .
2
2
2
2
4 Sperrprotokolle
4.1 Wechselseitiger Ausschluß: XPE
4.1.1 Beispiel . . . . . . . . .
4.2 Wechselseitiger Ausschluß: SPE
4.2.1 Beispiel . . . . . . . . .
4.3 Höhere Parallelität: SE . . . . .
4.3.1 Beispiel . . . . . . . . .
.
.
.
.
.
.
3
3
3
3
4
4
4
5 Zwei-Phasen-Protokoll: 2PL
5.1 Variante: Sperren bis EOT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5.2 Variante: Preclaiming . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5
5
6
6 Isolationsstufen
6
7 Zusammenfassung
6
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
i
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
1
Einleitung und Motivation
– oft arbeiten viele Benutzer parallel auf der Datenbank → parallele Transaktionen
– Probleme, Fehler möglich
– einfache Lösung: Transaktionen seriell ausführen
– Problem dabei: geringere Parallelität, schlechtere Antwortzeiten
– Ziel: Transaktionen parallel ausführen, dabei Interferenzen vermeiden
2
Serialisierbarkeit
– Aktion:
– lesender oder schreibender Zugriff auf die Datenbank
– atomar
– im Kern seriell ausgeführt
Benutzer:
T1 --- a11 --------- a12 ----------- a13
T2 --------- a21 ---------- a22 ------------ a23 ---- a24
..........................................................
DBMS-Kern:
a11
a12
a13
a21
a22
a23
a24
– Verzahnung der Transaktionen T1 und T2
2.1
Concurrency Control
– Aufgabe des DBMS: Transaktionen ohne Interferenzen ausführen:
Nebenläufigkeitssteuerung, Concurrency Control
– Transaktionen scheinbar nacheinander, also seriell ausführen
– dazu Aktionen verschieben
a11
<-- a12
<-- a13
a21 -->
a22 -->
a23
a24
..........................................................
a11 a12 a13
a21 a22 a23 a24
2.2
Serialisierbarkeit
– Verzahnung der Transaktionen serialisierbar, wenn Aktionen ohne Konflikte verschoben
werden können
– Transaktion wird scheinbar zu einem Zeitpunkt, dem Serialisierungspunkt, ausgeführt
1
a11
a12
a13
a21 a22 a23 a24
..........................................................
S1
S2
– Voraussetzung: Aktionen können konfliktfrei dahin verschoben werden
2.3
Konfliktfreiheit
– beim Verschieben wird Reihenfolge von Aktionen geändert
– nur möglich, wenn Ergebnis der Aktionsausführung gleich bleibt
– Voraussetzung für Konfliktfreiheit:
– Aktionen arbeiten auf verschiedenen Objekten
– beide Aktionen greifen nur lesend auf die Datenbank zu
– Abstraktion: nur Aktionen read(X) und write(X) betrachten
2.4
On-line Scheduler
– Serialisierbarkeit bezieht sich auf vollständige Transaktionen
– Problem: DBMS muß on-line prüfen, ob Aktion ausgeführt werden kann
→ on-line scheduler
– überführt Aufrufsequenz in Ausführungssequenz
3
3.1
Sperrverfahren
Wechselseitiger Ausschluß
– Ziel: Serialisierungspunkte garantieren
– Ansatz: alle benutzten DB-Objekte exklusiv für Transaktion reservieren
– Transaktion sperrt Objekte; nur Inhaber von Sperre darf zugreifen
3.2
Sperrmodi
→ Arten von Sperren klassifizieren:
– Zugriffsrechte des Inhabers
– Verträglichkeit mit anderen Sperren
3.2.1
Schreib- und Lesesperren
– Schreibsperre, exclusive lock, X-Sperre
– Lesesperre, shared lock, S-Sperre
2
Veträglichkeitsmatrix
vorhandene
Sperre
4
beantragte Sperre
S-Sperre
X-Sperre
keine
+
+
S-Sperre
+
-
X-Sperre
-
-
Sperrprotokolle
→ legen Vorgehen beim Anfordern und Freigeben von Sperren fest
4.1
Wechselseitiger Ausschluß: XPE
– zu Beginn jeder Transaktion (TA) alle relevanten Objekte exklusiv gesperrt
(preclaiming)
X
P
– am Ende der TA (EOT) wieder freigeben
E
4.1.1
Beispiel
Aufrufsequenz:
T1 r(X) ------------------------ w(X)
T2
r(Y) --------- w(X)
T3
r(Y) ------------- w(Z)
Ausführungssequenz:
T1 r(X) ------------------------ w(X)
T2
? ......................... r(Y) --------- w(X)
T3
? ...................................... r(Y) ---------- w(Z)
– Ausführungssequenz seriell
– geringere Parallelität
– Verbesserung möglich: Y wird nur gelesen → T2, T3 müßten eigentlich nicht warten!
4.2
Wechselseitiger Ausschluß: SPE
– wie XPE, aber zusätzlich Lesesperren (shared locks)
3
S
4.2.1 Beispiel
Aufrufsequenz:
T1 r(X) ------------------------ w(X)
T2
r(Y) --------- w(X)
T3
r(Y) -------------------- w(Z)
Ausführungssequenz:
T1 r(X) ------------------------ w(X)
T2
? ......................... r(Y) --------- w(X)
T3
r(Y) -------------------- w(Z)
– Lesesperren an Y für T2 und T3 sind kompatibel → werden sofort zugeteilt
– keine serielle Ausführung, aber serialisierbar
– Problem: Endlosblockierung möglich (T2)
4.3
Höhere Parallelität: SE
– wie SPE, aber Objekte erst unmittelbar vor erster Benutzung sperren –
also kein preclaiming
– höhere Parallelität
– geringere Wartezeiten
4.3.1
Beispiel
→ T2 muß nicht unnötig auf Zuteilung von Sperre an Y warten
Aufrufsequenz:
T1 r(X) ------------------------ w(X)
T2
r(Y) --------- w(X)
T3
r(Y) --------------- w(Z)
Ausführungssequenz:
T1 r(X) ------------------------ w(X)
T2
r(Y) ----- ?.............. ------- w(X)
T3
r(Y) --------------- w(Z)
Problem: Deadlocks möglich
– zyklische Wartesituation
– muß vom DBMS überwacht/aufgelöst werden → Aufwand
T1
T2
r(X) ------------------ w(Y)
r(Y) -------------------- w(X)
4
5
Zwei-Phasen-Protokoll: 2PL
– Zeitdauer, während der Objekt gesperrt ist, möglichst kurz halten
und
– Serialisierbarkeit gewährleisten
– Wenn Sperre freigegeben wurde, werden keine neuen Sperren angefordert
Zahl gehaltener
Sperren
^
|
|
/------------------------\
|
/
\
|
/
\
|
/
\
|
/
\
| /
\
-+-------------------------------------------->
Zeit
Wachstumsphase
5.1
Verarbeitungsphase
Schrumpfungsphase
Variante: Sperren bis EOT
Zahl gehaltener
Sperren
^
|
|
/------------------------|
|
/
|
|
/
|
|
/
|
|
/
|
| /
|
-+-------------------------------------------->
Zeit
– verlängerte Sperrzeit → geringere Parallelität
– geringerer Verwaltungsaufwand
– keine unsicheren Werte (dirty reads) → keine Cascading Rollbacks
5
5.2
Variante: Preclaiming
Zahl gehaltener
Sperren
^
|
|
|------------------------\
|
|
\
|
|
\
|
|
\
|
|
\
|
|
\
-+-------------------------------------------->
Zeit
– verlängerte Sperrzeit
– Deadlock-frei
– Problem: Sperranforderung im voraus
6
Isolationsstufen
Aufweichen der Isolation von TAen → höhere Parallelität
Isolationsstufen in SQL:
1. read uncommitted: Lesetransaktionen, nicht vor parallelen TAen geschützt
→ dirty reads möglich
2. read committed: keine unsicheren Werte lesen; aber keine Lesesperren anfordern
→ nichtwiederholbares Lesen möglich
3. repeatable read: Lesesperren anfordern
4. serializable: garantiert Serialisierbarkeit
7
Zusammenfassung
1. Sperrverfahren verhindern Probleme beim parallelen Zugriff auf Datenbanken
2. einfach: wechselseitiger Ausschluß
3. 2-Phasen-Protokoll ist allgemeinstes Sperrprotokoll
4. Sperren bis EOT und Preclaiming sind Sonderfälle
5. in SQL kann Isolationsstufe von TA angegeben werden
6
Herunterladen