6. Grundlagen des Transaktionskonzepts

Werbung
6. Grundlagen des Transaktionskonzepts
What can go wrong, will go wrong ...
• Transaktionskonzept
• GBIS-Rahmen: Einordnung
- führt ein neues Verarbeitungsparadigma ein
- ist Voraussetzung für die Abwicklung betrieblicher Anwendungen
(mission-critical applications)
Anwendung
Daten
Steuerung
Funktionen
- erlaubt „Vertragsrecht“ in rechnergestützten IS zu implementieren
• ACID-Transaktionen zur Gewährleistung weit reichender
Zusicherungen zur Qualität der Daten, die gefährdet sind durch
SW-Architektur
- fehlerhafte Programme und Daten im Normalbetrieb
- inkorrekte Synchronisation von Operationen im Mehrbenutzerbetrieb
• Wie erzielt man Atomarität von DB-Operationen und Transaktionen?
- vielfältige Fehler im DBS und seiner Umgebung
- Atomare Aktionen
- Schlüsselrolle von Synchronisation sowie Logging und Recovery
• Erhaltung der DB-Konsistenz
➥ Logging und Recovery bietet Schutz vor erwarteten Fehlern!
• Entwicklungsziele
• Anomalien im Mehrbenutzerbetrieb
Build a system used by millions of people that is always available –
out less than 1 second per 100 years = 8 9’s of availability!
- Verlorengegangene Änderungen
(J. Gray: 1998 Turing Lecture)
- Inkonsistente Analyse, Phantom-Problem usw.
- Verfügbarkeit heute (optimistisch):1
• Synchronisation von Transaktionen
• für Web-Sites: 99%
- Ablaufpläne, Modellannahmen
• für gut administrierte Systeme: 99,99%
- Korrektheitskriterium, Konsistenzerhaltende Ablaufpläne
• höchstens: 99,999%
• Theorie der Serialisierbarkeit
- Künftige Verfügbarkeit
- Äquivalenz von Historien, Serialisierbarkeitstheorem
• da fehlen noch 5 9’
- Klassen von Historien
• bis 2010 nicht zu erreichen???
• Zwei-Phasen-Sperrprotokolle (2PL)
• ...
• Logging und Recovery
• Commit-Verarbeitung
1.
6-1
Despite marketing campaigns promising 99,999% availability, well-managed servers today
achieve 99,9% to 99%, or 8 to 80 hours downtime per year (Armando Fox)
6-2
Atomarität ist keine natürliche Eigenschaft von Rechnern
erzwungenes
abnormales Ende
erzwungenes ROLLBACK
DML3
DML2
DML1
BOT
• Atomicity:
• Consistency:
Konsistenz und semantische Integrität der DB ist durch fehlerhafte Daten
und Operationen eines Programms gefährdet.
• Isolation:
Isolierte Ausführung bedeutet „logischen Einbenutzerbetrieb“
abnormales Ende
ROLLBACK
DMLn
•
•
•
DML3
DML2
DML1
BOT
• Durability:
Dauerhaftigkeit heißt, dass die Daten und Änderungen erfolgreicher
Transaktionen jeden Fehlerfall „überleben“ müssen
➥ ACID-Transaktionen befreien den Anwendungsprogrammierer von den
Aspekten der Ablaufumgebung des Programms und von möglichen Fehlern!
• Wie setzt man diese Forderungen systemtechnisch um?
- hier nur Einführung von Begriffen
- vertiefende Betrachtung und Diskussion von Realisierungskonzepten
6-3
normales Ende
COMMIT
DMLn
•
•
•
DML3
DML2
DML1
in nachfolgenden Vorlesungen (DBAW, TAS)
BOT
Mögliche Ausgänge einer Transaktion
Systemausfall,
Programm,
fehler
usw.
Transaktionen als dynamische Kontrollstruktur
6-4
Lies / Schreibe Seite
Stelle Seite bereit
Gib Seite frei
Select ... From ... Where
Insert ... Into
Füge Satz ein
Modifiziere Zugriffspfad
6-5
• Abbildung der Miniwelt
Realisierung verlangt vor allem
- Synchronisation im Mehrbenutzerbetrieb (concurrency transparency)
- Logging und Recovery (failure transarency)
SQL garantiert Anweisungsatomarität und natürlich Transaktionsatomarität!
SQL-Opn
...
SQL-Op1
Schutzmaßnahmen im Ausführungspfad des DBS funktionieren nicht!
Schichtenspezifische
Operationen
Schutzbedürfnis einer flachen Transaktion
und Zusicherungen an den Programmierer
Erhaltung der DB-Konsistenz
Reale Welt
Modell
Angestellter
Vorgesetzter
Manager
Abbildungsrichtung
• Erhaltung der semantischen Datenintegrität
- Beschreibung der „Richtigkeit“ von Daten durch Prädikate und Regeln,
bereits bekannt:
• modellinhärente Bedingungen (relationale Invarianten)
• anwendungsspezifische Bedingungen (Check, Unique, Not Null, ...)
- aktive Maßnahmen des DBS erwünscht (Trigger, ECA-Regeln)
- „Qualitätskontrollen“ bei Änderungsoperationen
• Ziel
- Nur DB-Änderungen zulassen, die allen definierten Constraints entsprechen
(offensichtlich „falsche“ Änderungen zurückweisen!)
- Möglichst hohe Übereinstimmung von DB-Inhalt und Miniwelt
(Datenqualität)
➥ Integritätsbedingungen der Miniwelt sind explizit bekannt zu machen,
um automatische Überwachung zu ermöglichen.
6-6
Warum Mehrbenutzerbetrieb?
Unkontrollierter Mehrbenutzerbetrieb
• Ausführung von Transaktionen
• Abhängigkeit von nicht freigegebenen Änderungen
t
Einbenutzerbetrieb
...
T1
...
T2
...
T2
read (A);
A := A + 100
write (A);
...
T3
Mehrbenutzerbetrieb
T1
...
...
read (A);
read (B);
B := B + A;
write (B);
commit;
T1
T2
T3
abort;
- CPU-Nutzung während TA-Unterbrechungen
- Geänderte, aber noch nicht freigegebene Daten werden als „schmutzig“
bezeichnet (dirty data), da die TA ihre Änderungen bis Commit (einseitig)
zurücknehmen kann
• E/A
• Denkzeiten bei Mehrschritt-TA
• Kommunikationsvorgänge in verteilten Systemen
- bei langen TA zu große Wartezeiten für andere TA (Scheduling-Fairness)
Anomalien im unkontrollierten Mehrbenutzerbetrieb
1. Abhängigkeit von nicht freigegebenen Änderungen
(dirty read, dirty overwrite)
- Schmutzige Daten dürfen von anderen TAs nicht in „kritischen” Operationen
benutzt werden
• Verlorengegangene Änderung (Lost Update)
T1
A in DB
read (A);
read (A);
2. Verlorengegangene Änderung (lost update)
3. Inkonsistente Analyse (non-repeatable read)
T2
A := A - 1;
write (A);
4. Phantom-Problem
A := A - 1;
5. Integritätsverletzung durch Mehrbenutzer-Anomalie
write (A);
6. Instabilität von Cursor-Positionen
➥ nur durch Änderungs-TA verursacht
6-7
➥ Verlorengegangene Änderungen sind auszuschließen!
6-8
6-9
6 - 10
Phantom-Problem
UPDATE Pers
SET Gehalt = Gehalt + 2000
WHERE Pnr = 3456
UPDATE Pers
SET Gehalt = Gehalt + 1000
WHERE Pnr = 2345
Änderungstransaktion
Lesetransaktion
IF gsumme <> summe THEN
<Fehlerbehandlung>
SELECT Gehaltssumme INTO :gsumme
FROM Abt
WHERE Anr = 17
SELECT SUM (Gehalt) INTO :summe
FROM Pers
WHERE Anr = 17
(Gehaltssumme überprüfen)
Zeit
3456
UPDATE Abt
SET Gehaltssumme = Gehaltssumme + 55.000
WHERE Anr = 17
INSERT INTO Pers (Pnr, Anr, Gehalt)
VALUES (4567, 17, 55.000)
(Einfügen eines neuen Angestellten)
Änderungstransaktion
48.000
3456
50.000
40.000
39.000
2345
2345
Gehalt)
DB-Inhalt
(Pnr,
Zeit
Einfügungen oder Löschungen können Leser zu falschen Schlussfolgerungen verleiten:
summe := summe + gehalt
SELECT Gehalt INTO :gehalt
FROM Pers
WHERE Pnr = 3456
SELECT Gehalt INTO :gehalt
FROM Pers
WHERE Pnr = 2345
summe := summe + gehalt
(Gehaltssumme berechnen)
Lesetransaktion
Das wiederholte Lesen einer gegebenen Folge von Daten führt auf verschiedene Ergebnisse:
Inkonsistente Analyse (Non-repeatable Read)
Synchronisation von Transaktionen
• TRANSAKTION: Ein Programm T mit DML-Anweisungen,
Synchronisation von Transaktionen (2)
• Beispiel für einige Ausführungsvarianten
das folgende Eigenschaft erfüllt:
Ausführung 1
Wenn T allein auf einer konsistenten DB ausgeführt wird, dann terminiert T
(irgendwann) und hinterlässt die DB in einem konsistenten Zustand.
(Während der TA-Verarbeitung gibt es keine Konsistenzgarantien!)
T1
Ausführung 2
T2
T1
read (A)
T2
read (A)
read (B)
read (B)
B-2
B+1
write (A)
write (A)
B-2
write (B)
read (B)
write (B)
write (B)
read (B)
read (C)
B+1
C+2
write (B)
read (B)
write (B)
B-2
B+1
read (C)
read (C)
C+2
write (B)
C+2
write (C)
T3
T2
A-1
A-1
read (B)
T2
T1
read (A)
A-1
write (A)
• Ablaufpläne für 3 Transaktionen
T1
Ausführung 3
write (C)
write (C)
➥ Bei serieller Ausführung bleibt der Wert von A + B + C unverändert!
verzahnter
Ablaufplan
serieller
Ablaufplan
• Was ist das Ergebnis der verschiedenen Ausführungsvarianten?
A
➥ Wenn Transaktionen seriell ausgeführt werden, dann bleibt die
Konsistenz der DB erhalten.
• Ziel der Synchronisation:
B
C
initialer Wert
nach T1; T2
nach Ausf. 2
logischer Einbenutzerbetrieb, d.h. Vermeidung aller Mehrbenutzeranomalien
nach Ausf. 3
nach T2; T1
➥ Fundamentale Fragestellung:
Wann ist die parallele Ausführung von n Transaktionen
auf gemeinsamen Daten korrekt?
6 - 11
- Ziel: Äquivalenz der Ergebnisse von verzahnten Ausführungen
zu einer der möglichen seriellen Ausführungen
6 - 12
A+B+C
Modellbildung für die Synchronisation
• Wie kann die Korrektheit der Ausführung im Mehrbenutzerbetrieb
überprüft werden?
- Korrektheitskriterium: Konfliktserialisierbarkeit
Synchronisation – Modellannahmen
• Read/Write-Modell (Page Model)
- DB ist Menge von unteilbaren, uninterpretierten Datenobjekten
(z. B. Seiten)
- Geschichtsschreiber zeichnet Historie H auf
• Umformung der aufgezeichneten Operationsfolge H in eine
äquivalente serielle Operationsfolge
- DB-Anweisungen lassen sich nachbilden durch atomare Lese- und Schreiboperationen auf Objekten:
• ri[A], wi[A] zum Lesen bzw. Schreiben des Datenobjekts A
• „post mortem“-Analyse
• ci , ai zur Durchführung eines commit bzw. abort
• Tatsächliche Umsetzung
- Scheduler überprüft jede Operation Opi und erzwingt einen
serialisierbaren Ablaufplan S (Schedule)
• wenn Opi in S konfliktfrei ist, wird sie ausgeführt
und an S angehängt
• sonst wird Opi blockiert oder gar die zugehörige Transaktion
zurückgesetzt
- Transaktion wird modelliert als eine endliche Folge von Operationen p i:
T = p1 p2 p3 ... pn
mit
pi ∈ {r[xi], w[xi]}
- Eine vollständige TA hat als letzte Operation entweder einen Abbruch a
oder ein Commit c
T = p1 ... pn a
oder
T = p1 ... pn c
➥ Für eine TA Ti werden diese Operationen mit ri, wi, ci oder ai
bezeichnet, um sie zuordnen zu können
• Die Ablauffolge von TA mit ihren Operationen lässt sich wie folgt
beschreiben:
r1[A] r2[A] r3[B] w1[A] w3[B] r1[B] c1 r3[A] w2[A] a2 w3[C] c3 ...
6 - 13
6 - 14
Korrektheitskriterium der Synchronisation
Konsistenzerhaltende Ablaufpläne
• Serieller Ablauf von Transaktionen
• Die TA T1-T3 müssen so synchronisiert werden, dass der resultierende Zustand der DB gleich dem ist, der bei der seriellen Ausführung in
einer der folgenden Sequenzen zustande gekommen wäre:
TA = {T1, T2, T3}
DB = {A, B, C}
T1
A
T1, T2, T3
T1, T3, T2
C
B
T2
T2, T1, T3
T2, T3, T1
T3, T1, T2
T3, T2, T1
C
• Bei n TA gibt es n! (hier 3! = 6) mögliche serielle Ablaufpläne
A
T3
B
t
• Serielle Ablaufpläne können verschiedene Ergebnisse haben!
Ausführungsreihenfolge:
Abbuchung/Einzahlung auf Konto: TA1: - 5000; TA2: + 2000
Konto
• T1 | T2 bedeutet:
Stand = 2000
Limit = 2000
T1 sieht keine Änderungen von T2 und
T2 sieht alle Änderungen von T1
• Formales Korrektheitskriterium: Serialisierbarkeit:
• Nicht alle seriellen Ablaufpläne sind möglich!
Die parallele Ausführung einer Menge von TA ist serialisierbar,
wenn es eine serielle Ausführung derselben TA-Menge gibt,
die den gleichen DB-Zustand
und die gleichen Ausgabewerte
wie die ursprüngliche Ausführung erzielt.
r [x]
T1
w [z]
r [y]
T2
w [x]
T3
T4
• Hintergrund:
w [y]
r [x]
- Serielle Ablaufpläne sind korrekt!
- Jeder Ablaufplan, der denselben Effekt wie ein serieller erzielt, ist akzeptierbar
6 - 15
6 - 16
Theorie der Serialisierbarkeit
Theorie der Serialisierbarkeit (2)
• Ablauf einer Transaktion
• Historie2
- Häufigste Annahme: streng sequentielle Reihenfolge der Operationen
- Unter einer Historie versteht man den Ablauf einer (verzahnten)
Ausführung mehrerer TA
- Serialisierbarkeitstheorie lässt sich auch auf Basis einer partiellen Ordnung
(<i) entwickeln
- Sie spezifiziert die Reihenfolge, in der die Elementaroperationen
verschiedener TA ausgeführt werden
- TA-Abschluss: abort oder commit – aber nicht beides!
• Einprozessorsystem: totale Ordnung
• Konsistenzanforderungen an eine TA
- Falls Ti ein abort durchführt, müssen alle anderen Operationen pi[A] vor ai
ausgeführt werden: pi[A] <i ai
• Mehrprozessorsystem: parallele Ausführung einiger Operationen
möglich ➥ partielle Ordnung
• Konfliktoperationen:
Kritisch sind Operationen verschiedener Transaktionen
auf denselben DB-Daten,
wenn diese Operationen nicht reihenfolgeunabhängig sind!
- Analoges gilt für das commit: pi[A] <i ci
- Wenn Ti ein Datum A liest und auch schreibt, ist die Reihenfolge festzulegen:
ri[A] <i wi[A]
oder
wi[A] <i ri[A]
• Was sind Konfliktoperationen?
- ri[A] und rj[A]: Reihenfolge ist irrelevant
• Beispiel: Überweisungs-TA T1 (von K1 nach K2)
r1[K1]
oder
r1[K1]
w1[K1]
w1[K1]
r1[K2]
➥ kein Konflikt!
r1[K2]
w1[K2]
- ri[A] und wj[A]: Reihenfolge ist relevant und festzulegen.
c1
Entweder ri[A] → wj[A]
w1[K2]
➥ R/W-Konflikt!
c1
oder wj[A] → ri[A]
➥ W/R-Konflikt!
- Totale Ordnung: r1[K1] → w1[K1] → r1[K2] → w1[K2] → c1
- wi[A] und rj[A]: analog
- Partielle Ordnung
r1[K1] → w1[K1]
r1[K2] → w1[K2]
- wi[A] und wj[A] Reihenfolge ist relevant und festzulegen
➥ W/W-Konflikt!
c1
2.
6 - 17
Der Begriff Historie bezeichnet eine retrospektive Sichtweise, also einen abgeschlossenen Vorgang. Ein Scheduling-Algorithmus (Scheduler) produziert Schedules, wodurch noch nicht abgeschlossene Vorgänge bezeichnet werden. Manche Autoren machen jedoch keinen Unterschied zwischen Historie und Schedule.
6 - 18
Theorie der Serialisierbarkeit (3)
• Beschränkung auf Konflikt-Serialisierbarkeit3
Theorie der Serialisierbarkeit (4)
• Beispiel-Historie für 3 TA
• Historie H für eine Menge von TA {T1, ..., Tn}
ist eine Menge von Elementaroperationen mit partieller Ordnung <H,
r2[A] →
↑
so dass gilt:
H=
n
1. H =
∪
w2[B] →
r3[B] →
w3[A] →
w2[C] → c2
↑
w3[B] →
↑
w3[C] → c3
↑
Ti
r1[A] →
i=1
w1[A] →
c1
2. <H ist verträglich mit allen <i-Ordnungen, d.h.
n
<H ⊇
∪
i
<i
- Reihenfolge konfliktfreier Operationen (zwischen TA) wird nicht spezifiziert
1
3. Für zwei Konfliktoperationen p, q ∈ H gilt entweder
p <H q
- Mögliche totale Ordnung4
oder
H1 = r1[A] → r3[B] → w1[A] → w3[A] → c1 → r2[A] → w3[B] →
q <H p
w3[C] → c3 → w2[B] → w2[C] → c2
• Ein Schedule ist ein Präfix einer Historie
3.
In der Literatur werden verschiedene Formen der Serialisierbarkeit, also der Äquivalenz zu einer seriellen Historie, definiert. Die Final-State-Serialisierbarkeit besitzt die geringsten Einschränkungen. Intuitiv sind zwei
Historien (mit der gleichen Menge von Operationen) final-state-äquivalent, wenn sie jeweils denselben Endzustand für einen gegebenen Anfangszustand herstellen. Historien mit dieser Eigenschaft sind in der Klasse FSR
zusammengefasst. Die View-Serialisierbarkeit (Klasse VSR) schränkt FSR weiter ein. Die hier behandelte
Konflikt-Serialisierbarkeit (Klasse CSR) ist für praktische Anwendungen die wichtigste. Sie ist effizient überprüfbar und unterscheidet sich bereits dadurch wesentlich von den beiden anderen Serialisierbarkeitsbegriffen.
Es gilt: CSR
⊂ VSR ⊂ FSR
4.
6 - 19
Alternative Schreibweise bei einer totalen Ordnung: Weglassen der →
6 - 20
Theorie der Serialisierbarkeit (5)
• Definition: Äquivalenz zweier Historien
Serialisierbare Historie
• Eine Historie H ist serialisierbar, wenn sie äquivalent zu einer seriellen
- Zwei Historien H und H’ sind äquivalent, wenn sie die Konfliktoperationen
der nicht abgebrochenen TA in derselben Reihenfolge ausführen:
H ≡ H’, wenn pi <H qj, dann auch pi <H’ qj
Historie Hs ist
- Einführung eines Konfliktgraph G(H)
(auch Serialisierbarkeitsgraph SG(H) genannt)
• Konstruktion des G(H) über den erfolgreich abgeschlossenen TA
- Anordnung der konfliktfreien Operationen ist irrelevant
- Reihenfolge der Operationen innerhalb einer TA bleibt invariant
• Konfliktoperationen pi, qj aus H mit pi <H qj fügen eine Kante Ti → Tj
in G(H) ein, falls nicht schon vorhanden
- Beispiel-Historie
r1[A] →
• Beispiel
H=
r1[A] →
r2[A] →
w2[B] →
↑
↑
w1[A] →
w1[B] →
w1[A] →
w1[B] →
↑
c2
r2[A]
H=
c1
↑
→
w2[B] →
c2
↓
c1
r3[A] →
w3[A] →
c3
- Zugehöriger Konfliktgraph
- Totale Ordnung
H1 = r1[A] → w1[A] → r2[A] → w1[B] → c1 → w2[B] → c2
H2 = r1[A] → w1[A] → w1[B] → c1 → r2[A] → w2[B] → c2
G(H):
• Serialisierbarkeitstheorem
Eine Historie H ist genau dann serialisierbar, wenn der zugehörige
Konfliktgraph G(H) azyklisch ist
H1 ≡ H2 (ist seriell)
➥ Topologische Sortierung!
• CSR
bezeichne die Klasse aller konfliktserialisierbaren Historien. Die Mitgliedschaft in
CSR lässt sich in Polynomialzeit in der Menge der teilnehmenden TA testen
6 - 21
6 - 22
Serialisierbare Historie (2)
• Historie
Serialisierbare Historie (3)
• Anforderungen an im DBMS zugelassene Historien
- Serialisierbarkeit ist eine Minimalanforderung
H=
w1[A] → w1[B] → c1 → r2[A] → r3[B] → w2[A] → c2 → w3[B] → c3
- TA Tj sollte zu jedem Zeitpunkt vor Commit lokal rücksetzbar sein
• andere mit Commit abgeschlossene Ti dürfen nicht betroffen sein
• kritisch sind Schreib-/Leseabhängigkeiten
wj[A] → ... → ri[A]
• Konfliktgraph
• Ti darf erst nach Tj ein Commit durchführen
- Rücksetzen von TA Tj sollte kein kaskadierendes Rücksetzen verursachen
G(H) :
• andere noch nicht abgeschlossene Ti dürfen nicht betroffen sein
• Ti darf Änderungen von Tj erst nach dem Commit von Tj sehen
- Wie kritisch für das lokale Rücksetzen von Tj sind
• Topologische Ordnungen
Hs1 = w1[A] → w1[B] → c1 → r2[A] → w2[A] → c2 → r3[B] → w3[B] → c3
ri[A] → ... → wj[A]
oder
wj[A] → ... → wi[A]
Hs1 = T1 | T2 | T3
oder
wi[A] → ... → wj[A]
Hs2 = w1[A] → w1[B] → c1 → r3[B] → w3[B] → c3 → r2[A] → w2[A] → c2
Hs2 = T1 | T3 | T2
H ≡ Hs1 ≡ Hs2
6 - 23
6 - 24
Zweiphasen-Sperrprotokolle 5
RX-Sperrverfahren
• Sperrmodi
• Einhaltung folgender Regeln gewährleistet Serialisierbarkeit:
- Sperrmodus des Objektes: NL (no lock), R (read), X (exclusive)
1. Vor jedem Objektzugriff muss Sperre mit ausreichendem Modus
angefordert werden
- Sperranforderung einer Transaktion: R, X
2. Gesetzte Sperren anderer TA sind zu beachten
• Kompatibilitätsmatrix:
ModusÜbergang
NL
R
X
aktueller Modus
des Objekts
NL
R
X
angeforderter
Modus der TA
R
+
+
-
R
R
R
-
X
+
-
-
X
X
-
-
3. Eine TA darf nicht mehrere Sperren für ein Objekt anfordern
4. Zweiphasigkeit:
- Anfordern von Sperren erfolgt in einer Wachstumsphase
- Freigabe der Sperren in Schrumpfungsphase
- Sperrfreigabe kann erst beginnen, wenn alle benötigten Sperren
gehalten werden
- Falls Sperre nicht gewährt werden kann, muss die anfordernde TA warten, bis
das Objekt freigegeben wird (Commit/Abort der die Sperre besitzenden TA)
5. Spätestens bei Commit sind alle Sperren freizugeben
- Wartebeziehungen werden in einem Wait-for-Graph (WfG) verwaltet
• Beispiel für ein 2PL-Protokoll (2PL: two-phase locking)
• Ablauf von Transaktionen
T1
T2
lock (a, X)
BOT
a
b
NL
NL
Bem.
X1
R2
...
unlock (b)
...
lock (b, R)
unlock (c)
R2, R1
lock (a, R)
- dynamische Entscheidung:
Sperr-Escalation
...
lock (c, X)
...
lock (b, R)
Zugriff auf n Sätze einer Tabelle
- einzelne Sätze oder
ganze Tabelle sperren?
lock (a, X)
...
lock (b, R)
X1
T2 wartet,
WfG:
NL --> R2
T2 wecken
unlock (a)
Commit
...
unlock (a)
...
An der SQL-Schnittstelle ist die Sperranforderung und -freigabe nicht sichtbar!
...
unlock(b)
R2
6 - 25
5.
Eswaran, K.P. et al.: The notions of consistency and predicate locks in a data base system,
in: Comm. ACM 19:11, 1976, 624-633
6 - 26
Zweiphasen-Sperrprotokolle (2)
• Formen der Zweiphasigkeit
Sperranforderung
und -freigabe
Zweiphasen-Sperrprotokolle (3)
• Strikte 2PL-Protokolle
- SS2PL (strong 2PL) gibt alle Sperren (X und R) erst bei Commit frei
- S2PL (strict 2PL) gibt alle X-Sperren erst bei Commit frei
#Sperren
- Sie verhindern dadurch kaskadierendes Rücksetzen
zweiphasig:
BOT
EOT
BOT
EOT
strikt
zweiphasig:
➥ Auftreten von Verklemmungen (Deadlocks) ist inhärent und kann bei
pessimistischen Methoden (blockierende Verfahren) nicht vermieden werden.
• Nicht-serialisierbare Historie
läuft vor ab
preclaiming:
BOT
EOT
T1
w(a)
w(c)
• Anwendung des 2PL-Protokolls
T1
BOT
lock (a, X)
read (a)
write (a)
T2
Bem.
BOT
lock (a, X)
T2 wartet: WfG
lock (b, X)
read (b)
unlock (a)
r(c)
T2
T3
SG
w(b)
r(b)
r(a)
• RX-Verfahren verhindert das Auftreten einer nicht-serialisierbaren Historie,
aber nicht (immer) Deadlocks
wartet auf
T2 wecken
read (a)
write (a)
unlock (a)
commit
T1
T2
unlock (b)
T3
X(a)
WfG
X(c)
R(c)
X(b)
R(b)
R(a)
➥ Zweiphasiges Protokoll reicht für den praktischer Einsatz nicht aus!
6 - 27
6 - 28
Logging und Recovery 6
Logging und Recovery (2)
transient
Hauptspeicher
• Aufgabe des DBMS:
Automatische Behandlung aller erwarteten Fehler
A
A‘
B
T1
• Was sind erwartete Fehler?
Crash
B‘
T6
7
- DB-Operation wird zurückgewiesen, Commit wird nicht akzeptiert, . . .
T2
T4
T7
- Stromausfall, DBMS-Probleme, . . .
- Geräte funktionieren nicht (Spur, Zylinder, Platte defekt)
C
C‘
T5
T3
- auch beliebiges Fehlverhalten der Gerätesteuerung?
- falsche Korrektur von Lesefehlern? . . .
• Fehlermodell von zentralisierten DBMS
- Transaktionsfehler (z. B. Deadlock) → Transaktions-Recovery
A
B
C
nicht-atomares
Einbringen von Seiten
A
B‘
C‘
materialisierte
DB
permanent
Externspeicher
- Systemfehler (Verlust aller HSP-Inhalte) → Crash-Recovery
- Gerätefehler → Medien-Recovery
- Katastrophen → Katastrophen-Recovery
• Erhaltung der physischen Datenintegrität
- Periodisches Erstellen von Datenkopien
- Führen von Änderungsprotokollen für den Fehlerfall (Logging)
- Bereitstellen von Wiederherstellungsalgorithmen im Fehlerfall
(Recovery)
• Logging
Sammeln von Redundanz im Normalbetrieb,
um für den Fehlerfall gerüstet zu sein
• DBMS garantiert physische Datenintegrität
- Bei jedem Fehler (z. B. Ausfall des Rechners, Crash des Betriebssystems
oder des DBMS, Fehlerhaftigkeit einzelner Transaktionsprogramme) wird
eine „korrekte“ Datenbank rekonstruiert
- Nach einem (Teil-)Crash ist immer der jüngste transaktionskonsistente
Zustand der DB zu rekonstruieren, in dem alle Änderungen von
Transaktionen enthalten sind, die vor dem Zeitpunkt des Fehlers
erfolgreich beendet waren (T1 bis T4) und sonst keine
- automatische Wiederherstellung bei Restart (Wiederanlauf) des Systems
• Maßnahmen beim Wiederanlauf (siehe auch Beispiel)
- Ermittlung der beim Crash aktiven Transaktionen (T5, T6, T7)
- Wiederholen (REDO) der Änderungen von abgeschlossenen Transaktionen,
die vor dem Crash nicht in die Datenbank zurückgeschrieben waren (A → A‘)
6.
7.
Härder, T., Reuter, A.: Principles of Transaction Oriented Database Recovery,
in: ACM Computing Surveys 15:4, Dec. 1983, 287-317.
Kommerzielle Anwendungen auf Großrechnern sind durch ihre Zuverlässigkeit gekennzeichnet.
Nicht selten besteht der Code bis zu 90% aus (erprobten) Recovery-Routinen (W. G. Spruth).
6 - 29
- Rücksetzen (UNDO) der Änderungen der aktiven Transaktionen in der Datenbank (B‘ → B)
6 - 30
Schnittstelle zwischen AP und DBS –
transaktionsbezogene Aspekte
Zusammenfassung
• Transaktionsparadigma
Aktionen auf Seite
des AP
Aktionen auf Seite
des DBS
- Verarbeitungsklammer für die Einhaltung der Constraints des DB-Schemas
- Verdeckung der Nebenläufigkeit (concurrency isolation)
➥ Synchronisation
Sicherstellen der Rücksetzbarkeit von Änderungsoperationen
BOT
•
•
•
➥ Logging und Recovery
• Beim ungeschützten und konkurrierenden Zugriff von Lesern und
Befehle
Op
i
Ausführen von DML-Befehlen
(Überprüfen der unverzögerten
Integritätsbedingungen)
•
•
•
Schreibern auf gemeinsame Daten können Anomalien auftreten
• Theorie der Serialisierbarkeit
- Konfliktoperationen:
EOT
(Überprüfen der verzögerten
Integritätsbedingungen)
C
O
2PC
- Verdeckung von (erwarteten) Fehlerfällen (failure isolation)
Phase 1
Sicherstellen der Wiederholbarkeit
aller Änderungen
M
Freigabe der Betriebsmittel
M
Phase 2
(Sperren)
I
Kritisch sind Operationen verschiedener Transaktionen auf denselben
DB-Daten, wenn diese Operationen nicht reihenfolgeunabhängig sind!
- Serialisierbarkeitstheorem:
Eine Historie H ist genau dann serialisierbar, wenn der zugehörige
Konfliktgraph G(H) azyklisch ist
• Realisierung der Synchronisation durch Sperrverfahren
- Sperren stellen während des laufenden Betriebs sicher, dass die
resultierende Historie serialisierbar bleibt
- Bei einer Konfliktoperation blockieren sie den Zugriff auf das Objekt
(Deadlock-Problem ist inhärent)
➥ Sperrverfahren sind pessimistisch und universell einsetzbar
T
Bestätigung über erfolgreiches
Ende an das AP
Weiterarbeit
im AP
• Logging und Recovery
- Automatische Behandlung von Fehlern
- Fehlerarten: Transaktions-, System-, Gerätefehler und Katastrophen
6 - 31
6 - 32
Herunterladen