Download - Übung Datenbanksysteme II Recovery · Nachbesprechung Hausaufgabe 5 Übung DBS II – Recovery 3 Problem: Selektionsergebnis: 18 Tupel V(Y,d) = 60 Man rechnet trotzdem mit 60 weiter,

Transcript
Page 1: Übung Datenbanksysteme II Recovery · Nachbesprechung Hausaufgabe 5 Übung DBS II – Recovery 3 Problem: Selektionsergebnis: 18 Tupel V(Y,d) = 60 Man rechnet trotzdem mit 60 weiter,

Übung Datenbanksysteme II

RecoveryTobias Bleifuß

Folien basierend auf Folien von Leon Bornemann, Maximilian Jenders und Thorsten Papenbrock

soccerkrys [CC BY 2.0 (https://creativecommons.org/licenses/by/2.0)], via Wikimedia Commons

Page 2: Übung Datenbanksysteme II Recovery · Nachbesprechung Hausaufgabe 5 Übung DBS II – Recovery 3 Problem: Selektionsergebnis: 18 Tupel V(Y,d) = 60 Man rechnet trotzdem mit 60 weiter,

Agenda

1. Nachbesprechung Hausaufgabe 52. Recovery3. Undo-Logging4. Redo-Logging5. Undo/Redo-Logging6. Aufgaben7. Hausaufgabe 6

21.01.19 / 23.01.19 Tobias Bleifuß

Chart 2

Übung DBS II –Recovery

Page 3: Übung Datenbanksysteme II Recovery · Nachbesprechung Hausaufgabe 5 Übung DBS II – Recovery 3 Problem: Selektionsergebnis: 18 Tupel V(Y,d) = 60 Man rechnet trotzdem mit 60 weiter,

Nachbesprechung Hausaufgabe 5

Übung DBS II –Recovery

3

Problem:Selektionsergebnis: 18 TupelV(Y,d) = 60Man rechnet trotzdem mit 60 weiter, da diemaximal 18 verschiedenen Werte aus 60 ausgewählt wurden. Wieso ergibt das Sinn?

à In Wahrscheinlichkeiten denken ist intuitiv!Die Wahrscheinlichkeit, dass ein Tupel aus Zzu einem Tupel aus dem Resultat der Selektion passt ist weiterhin 1/60

21.01.19 / 23.01.19 Tobias Bleifuß

Page 4: Übung Datenbanksysteme II Recovery · Nachbesprechung Hausaufgabe 5 Übung DBS II – Recovery 3 Problem: Selektionsergebnis: 18 Tupel V(Y,d) = 60 Man rechnet trotzdem mit 60 weiter,

Nachbesprechung Hausaufgabe 5

Übung DBS II –Recovery

4

21.01.19 / 23.01.19 Tobias Bleifuß

Page 5: Übung Datenbanksysteme II Recovery · Nachbesprechung Hausaufgabe 5 Übung DBS II – Recovery 3 Problem: Selektionsergebnis: 18 Tupel V(Y,d) = 60 Man rechnet trotzdem mit 60 weiter,

Aufgabe 3■ Meist richtig, eine Stolperfalle■ Beispiel:

□ X(a,b,c), Y(a,b), Z(c,d)□ ! " = ! $ = ! % = 1000□ ( ", * = ( ", + = ( $, * = ( $, + = 100□ ( ", , = 1000, V Z, c = 1□ T X ⋈ $ = 3444∗3444

344∗344 = 100 (geschätzt)

□ V X ⋈ $, , = 1000 (preservation of value sets)

□ T X ⋈ $ ⋈ % = 344∗34443444

Nachbesprechung Hausaufgabe 5

Übung DBS II –Recovery

5Trotzdem durch 1000 teilen! Warum?

21.01.19 / 23.01.19 Tobias Bleifuß

Page 6: Übung Datenbanksysteme II Recovery · Nachbesprechung Hausaufgabe 5 Übung DBS II – Recovery 3 Problem: Selektionsergebnis: 18 Tupel V(Y,d) = 60 Man rechnet trotzdem mit 60 weiter,

Fehlerarten:■ Fehlerhafte Dateneingabe■ Medienfehler■ Katastrophe■ Systemfehler

Recovery

Übung DBS II –Recovery

6

21.01.19 / 23.01.19 Tobias Bleifuß

Page 7: Übung Datenbanksysteme II Recovery · Nachbesprechung Hausaufgabe 5 Übung DBS II – Recovery 3 Problem: Selektionsergebnis: 18 Tupel V(Y,d) = 60 Man rechnet trotzdem mit 60 weiter,

Transaktionen■ Atomar■ Haben Zustand

□ Variablenwerte□ Aktuelles Statement

Datenbank■ Zustand für jedes Element

□ Je nach Granularität: Tupel, Block, etc…■ Konsistenz

□ Explizite und implizite Nebenbedingungen sind erfülltProblem: Systemfehler kann jederzeit auftreten à Atomarität gefährdetLösung: Logging

Recovery

Übung DBS II –Recovery

7

21.01.19 / 23.01.19 Tobias Bleifuß

Page 8: Übung Datenbanksysteme II Recovery · Nachbesprechung Hausaufgabe 5 Übung DBS II – Recovery 3 Problem: Selektionsergebnis: 18 Tupel V(Y,d) = 60 Man rechnet trotzdem mit 60 weiter,

Operationen■ Transaktion

□ Read(X,t)□ Write(X,t)

■ Puffermanager□ Input(X)□ Output(X)

Recovery

Übung DBS II –Recovery

8

Regelt Interaktion mit Disk

21.01.19 / 23.01.19 Tobias Bleifuß

Page 9: Übung Datenbanksysteme II Recovery · Nachbesprechung Hausaufgabe 5 Übung DBS II – Recovery 3 Problem: Selektionsergebnis: 18 Tupel V(Y,d) = 60 Man rechnet trotzdem mit 60 weiter,

Undo-Logging

Log-Einträge■ <Start T>■ <Commit T>■ <Abort T>■ <T,X,v> (v: alter Wert)

Regeln:■ U1: Falls T Element X verändert muss <T,X,v> im log geschrieben

werden bevor X auf Disk geschrieben wird■ U2: <Commit T> wird erst in das Log geschrieben nachdem alles auf

Disk geschrieben wurde■ Recovery: Mache alle Transaktionen T rückgängig, bei denen

<Commit T> nicht existiert.

Übung DBS II –Recovery

9

Es gibt keine Änderungen in der Datenbank(auf Disk), die nicht im Log auftauchen!

Page 10: Übung Datenbanksysteme II Recovery · Nachbesprechung Hausaufgabe 5 Übung DBS II – Recovery 3 Problem: Selektionsergebnis: 18 Tupel V(Y,d) = 60 Man rechnet trotzdem mit 60 weiter,

Log-Einträge■ <Start T>■ <Commit T>■ <Abort T>■ <T,X,v> (v: neuer Wert)

Regeln:■ R1: Bevor ein Wert in die Datenbank geschrieben wird müssen alle

Einträge im Log sein, inklusive <Commit T>Recovery: Führe alle Operationen der Transaktionen T erneut aus, bei denen <Commit T> existiert. Ignoriere den Rest

Redo-Logging

Übung DBS II –Recovery

10

Transaktionen ohne <commit T> im Log haben die Datenbank nicht verändert!

21.01.19 / 23.01.19 Tobias Bleifuß

Page 11: Übung Datenbanksysteme II Recovery · Nachbesprechung Hausaufgabe 5 Übung DBS II – Recovery 3 Problem: Selektionsergebnis: 18 Tupel V(Y,d) = 60 Man rechnet trotzdem mit 60 weiter,

Nachteil Undo:■ Daten müssen direkt nach der Transaktion geschrieben werden

à vorher kann die Anwendung kein „Successful“ erhaltenNachteil Redo:■ Alle veränderten Blöcke müssen im Puffer bleiben bis commit und Log-

Datensätze auf Disk sind à hoher Speicherbedarf

Undo/Redo Logging:■ Schreibe nun <T,X,v,w> (v: alt, w: neu)■ Regel UR1: Falls T Element X verändert muss <T,X,v,w> im Log

geschrieben werden bevor X auf Disk geschrieben wird■ Recovery: Undo für alle uncommitteten Transaktionen, Redo für alle

committeten Transaktionen

Undo/Redo-Logging

Übung DBS II –Recovery

11

Wie bei Undo/Redo

Keine Regel über commità DBMS ist flexibel

21.01.19 / 23.01.19 Tobias Bleifuß

Page 12: Übung Datenbanksysteme II Recovery · Nachbesprechung Hausaufgabe 5 Übung DBS II – Recovery 3 Problem: Selektionsergebnis: 18 Tupel V(Y,d) = 60 Man rechnet trotzdem mit 60 weiter,

Relevante Schreib-Operationen auf Festplatte:■ Schreiben der Daten■ Schreiben der Change-Logs■ Schreiben des Commit-Logs

In welcher Reihenfolge werden die Operationen ausgeführt bei:

UNDO REDO UNDO/REDO

Aufgabe 1:Schreib-Reihenfolgen

Übung DBS II –Recovery

12

1. Change2. Daten3. Commit

1. Change2. Commit3. Daten

1. Change2. Daten /

Commit 21.01.19 / 23.01.19 Tobias Bleifuß

Page 13: Übung Datenbanksysteme II Recovery · Nachbesprechung Hausaufgabe 5 Übung DBS II – Recovery 3 Problem: Selektionsergebnis: 18 Tupel V(Y,d) = 60 Man rechnet trotzdem mit 60 weiter,

Wie erfolgt die Wiederherstellung eines konsistenten Zustands bei:

Aufgabe 2:Recovery-Strategie

Übung DBS II –Recovery

13

§ Log rückwärts durchlaufen:§ Merke alle Transaktionen mit COMMIT oder ABORT§ Bei Update-Eintrag <T,X,v>:

§ Falls für T COMMIT oder ABORT bekannt:§ Ignoriere Eintrag

§ Sonst:§ Schreibe v auf X und <ABORT T>

§ Flush Log

UNDO

1. Change2. Daten3. Commit

REDO

1. Change2. Commit3. Daten

UNDO/REDO

1. Change2. Daten /

Commit

21.01.19 / 23.01.19 Tobias Bleifuß

Page 14: Übung Datenbanksysteme II Recovery · Nachbesprechung Hausaufgabe 5 Übung DBS II – Recovery 3 Problem: Selektionsergebnis: 18 Tupel V(Y,d) = 60 Man rechnet trotzdem mit 60 weiter,

Wie erfolgt die Wiederherstellung eines konsistenten Zustands bei:

Aufgabe 2:Recovery-Strategie

Übung DBS II –Recovery

14

UNDO

1. Change2. Daten3. Commit

REDO

1. Change2. Commit3. Daten

UNDO/REDO

1. Change2. Daten /

Commit

§ Identifiziere alle committeten Transaktionen§ Log vorwärts durchlaufen:

§ Bei Update-Eintrag <T,X,v‘>:§ Falls für T COMMIT bekannt:

§ Schreibe v‘ auf X§ Sonst:

§ Ignoriere Eintrag§ Schreibe <ABORT T> für jede uncommittete Transaktion§ Flush Log

21.01.19 / 23.01.19 Tobias Bleifuß

Page 15: Übung Datenbanksysteme II Recovery · Nachbesprechung Hausaufgabe 5 Übung DBS II – Recovery 3 Problem: Selektionsergebnis: 18 Tupel V(Y,d) = 60 Man rechnet trotzdem mit 60 weiter,

Wie erfolgt die Wiederherstellung eines konsistenten Zustands bei:

Aufgabe 2:Recovery-Strategie

Übung DBS II –Recovery

15

§ REDO für alle committeten Transaktionen in chronologischer Reihenfolge

§ UNDO für alle uncommitteten Transaktionen in umgekehrt chronologischer Reihenfolge

§ Flush Log

UNDO

1. Change2. Daten3. Commit

REDO

1. Change2. Commit3. Daten

UNDO/REDO

1. Change2. Daten /

Commit

21.01.19 / 23.01.19 Tobias Bleifuß

Page 16: Übung Datenbanksysteme II Recovery · Nachbesprechung Hausaufgabe 5 Übung DBS II – Recovery 3 Problem: Selektionsergebnis: 18 Tupel V(Y,d) = 60 Man rechnet trotzdem mit 60 weiter,

Kann beim Logging ohne Performance-Verluste auf <ABORT T>-Log-Einträge verzichtet werden bei:

Aufgabe 3:Logging Optimierung

Übung DBS II –Recovery

16

UNDO

Nein!

AbgebrocheneTransaktionenwürden unnötigerneut zurück-gerollt werden.

UNDO/REDO

Nein!

AbgebrocheneTransaktionenwürden unnötigerneut zurück-gerollt werden.

REDO

Ja!

Beim Recovery sind nur die committetenTransaktionenrelevant.

21.01.19 / 23.01.19 Tobias Bleifuß

Page 17: Übung Datenbanksysteme II Recovery · Nachbesprechung Hausaufgabe 5 Übung DBS II – Recovery 3 Problem: Selektionsergebnis: 18 Tupel V(Y,d) = 60 Man rechnet trotzdem mit 60 weiter,

Gegeben:■ DB-Elemente A=0 und B=0■ Transaktion T, die A und B auf 1 ändert

Logfile:■ <START T>■ <T,A,0>■ <T,?,?>■ <COMMIT T>

Fragen:■ Ist dies ein UNDO- oder REDO-Log?■ Welche Werte müssen die “?“ enthalten?

Aufgabe 4:Log-Analyse

Übung DBS II –Recovery

17

In <T,A,0> steht der alte Wert von Aà UNDO-Log

21.01.19 / 23.01.19 Tobias Bleifuß

Page 18: Übung Datenbanksysteme II Recovery · Nachbesprechung Hausaufgabe 5 Übung DBS II – Recovery 3 Problem: Selektionsergebnis: 18 Tupel V(Y,d) = 60 Man rechnet trotzdem mit 60 weiter,

Gegeben:■ DB-Elemente A=0 und B=0■ Transaktion T, die A und B auf 1 ändert

Logfile:■ <START T>■ <T,A,0>■ <T,B,0>■ <COMMIT T>

Fragen:■ Ist dies ein UNDO- oder REDO-Log?■ Welche Werte müssen die “?“ enthalten?

Aufgabe 4:Log-Analyse

Übung DBS II –Recovery

18

21.01.19 / 23.01.19 Tobias Bleifuß

In <T,A,0> steht der alte Wert von Aà UNDO-Log

Page 19: Übung Datenbanksysteme II Recovery · Nachbesprechung Hausaufgabe 5 Übung DBS II – Recovery 3 Problem: Selektionsergebnis: 18 Tupel V(Y,d) = 60 Man rechnet trotzdem mit 60 weiter,

UNDO-Checkpointing:■ Schreibe Log-Eintrag <START CKPT (T1, …, Tk)>

□ T1, …, Tk sind alle aktiven Transaktionen■ Flush-Log■ Warte auf <COMMIT Ti> bzw. <ABORT Ti> aller T1, …, Tk

□ Erlaube dabei neue Transaktionen!■ Schreibe Log-Eintrag <END CKPT>■ Flush-Log

UNDO-Recovery:

Aufgabe 5:Non-blocking Checkpointing

Übung DBS II –Recovery

19

? 21.01.19 / 23.01.19 Tobias Bleifuß

Page 20: Übung Datenbanksysteme II Recovery · Nachbesprechung Hausaufgabe 5 Übung DBS II – Recovery 3 Problem: Selektionsergebnis: 18 Tupel V(Y,d) = 60 Man rechnet trotzdem mit 60 weiter,

UNDO-Recovery:

Aufgabe 5:Non-blocking Checkpointing

Übung DBS II –Recovery

20

Lese das Log rückwärts:

a. Lese zuerst <END CKPT>:§ UNDO aller Transaktionen Ti ohne <COMMIT Ti>

bis zum ersten <START CKPT>

b. Lese zuerst <START CKPT (T1, …, Tk)>:§ UNDO aller Transaktionen Ti ohne <COMMIT Ti>

bis zum letzten <START Tj> der Transaktionen T1, …,Tk21.01.19 / 23.01.19 Tobias Bleifuß

Page 21: Übung Datenbanksysteme II Recovery · Nachbesprechung Hausaufgabe 5 Übung DBS II – Recovery 3 Problem: Selektionsergebnis: 18 Tupel V(Y,d) = 60 Man rechnet trotzdem mit 60 weiter,

REDO-Checkpointing:■ Schreibe Log-Eintrag <START CKPT (T1, …, Tk)>

□ T1, …, Tk sind alle aktiven Transaktionen□ Aktiv: Commit noch nicht im Log!

■ Flush-Log■ Warte bis alle Transaktionen Ti, die geänderte Daten im Puffer und ein

<COMMIT Ti> vor dem Checkpoint haben, auf Disk geschrieben wurden□ Erlaube dabei neue Transaktionen!

■ Schreibe Log-Eintrag <END CKPT>■ Flush-Log

REDO-Recovery:

Aufgabe 5:Non-blocking Checkpointing

Übung DBS II –Recovery

21? 21.01.19 / 23.01.19 Tobias Bleifuß

Page 22: Übung Datenbanksysteme II Recovery · Nachbesprechung Hausaufgabe 5 Übung DBS II – Recovery 3 Problem: Selektionsergebnis: 18 Tupel V(Y,d) = 60 Man rechnet trotzdem mit 60 weiter,

REDO-Recovery:

Aufgabe 5:Non-blocking Checkpointing

Übung DBS II –Recovery

22

Finde letzten Checkpoint-Datensatz im Log:

a. <END CKPT>:§ Chronologisches REDO aller Transaktionen Ti mit

<COMMIT Ti>, die im vorhergegangenen<START CKPT (T1, …, Tk)> stehenoder danach gestartet wurden; zurückgehen also bis zumletzten <START Ti> der T1, …, Tk

b. <START CKPT (T1, …, Tk)>:§ Suche den vorherigen <END CKPT> und nutze Vorgehen

aus a), da dieser Log-Eintrag nicht bei der Recovery hilft 21.01.19 / 23.01.19 Tobias Bleifuß

Page 23: Übung Datenbanksysteme II Recovery · Nachbesprechung Hausaufgabe 5 Übung DBS II – Recovery 3 Problem: Selektionsergebnis: 18 Tupel V(Y,d) = 60 Man rechnet trotzdem mit 60 weiter,

UNDO/REDO-Checkpointing:■ Schreibe Log-Eintrag <START CKPT (T1, …, Tk)>

□ T1, …, Tk sind alle aktiven Transaktionen■ Flush-Log■ Warte bis alle Aktionen aller Transaktionen, die zu diesem Zeitpunkt

geänderte Daten im Puffer haben, eben diese Daten auf Disk geschrieben haben□ Erlaube dabei neue Transaktionen!

■ Schreibe Log-Eintrag <END CKPT>■ Flush-Log

UNDO/REDO-Recovery:

Aufgabe 5:Non-blocking Checkpointing

Übung DBS II –Recovery

23

? 21.01.19 / 23.01.19 Tobias Bleifuß

Page 24: Übung Datenbanksysteme II Recovery · Nachbesprechung Hausaufgabe 5 Übung DBS II – Recovery 3 Problem: Selektionsergebnis: 18 Tupel V(Y,d) = 60 Man rechnet trotzdem mit 60 weiter,

UNDO/REDO-Recovery:

Aufgabe 5:Non-blocking Checkpointing

Übung DBS II –Recovery

24

Lese das Log rückwärts:

a. Lese zuerst <END CKPT>:§ UNDO (umgekehrt chronologisch) aller Transaktionen

ohne <COMMIT Ti> bis zum ersten <START Ti> der T1, …,Tk des <START CKPT>

§ REDO (chronologisch) aller Transaktionen Ti mit<COMMIT Ti>, die im vorhergegangenen<START CKPT (T1, …, Tk)> stehen oder danach gestartetwurden; zurückgehen nur bis zum<START CKPT> da frühere Änderungen der T1, …, Tkbereits geschrieben worden sein müssen

b. Lese zuerst <START CKPT (T1, …, Tk)>:§ Suche den vorherigen <END CKPT> und nutze Vorgehen

aus a), da dieser Log-Eintrag nicht bei der Recovery hilft

21.01.19 / 23.01.19 Tobias Bleifuß

Page 25: Übung Datenbanksysteme II Recovery · Nachbesprechung Hausaufgabe 5 Übung DBS II – Recovery 3 Problem: Selektionsergebnis: 18 Tupel V(Y,d) = 60 Man rechnet trotzdem mit 60 weiter,

Gegeben:■ Transaktionen

T1, T2 und T3

Aufgaben:■ Schreibe das zugehörige UNDO-Log■ Schreibe das zugehörige REDO-Log■ Schreibe das zugehörige UNDO/REDO-Log

Aufgabe 6:Logging

Übung DBS II –Recovery

25

21.01.19 / 23.01.19 Tobias Bleifuß

Page 26: Übung Datenbanksysteme II Recovery · Nachbesprechung Hausaufgabe 5 Übung DBS II – Recovery 3 Problem: Selektionsergebnis: 18 Tupel V(Y,d) = 60 Man rechnet trotzdem mit 60 weiter,

Übung DBS II –Recovery

26

T1 T2 T31 start2 read(B, t)3 t‘ = t+14 start5 read(A, u)6 write(B, t‘)7 commit8 start9 read(B, v)10 read(A, w)11 v‘ = v+w12 write(B, v‘)13 commit14 read(B, x)15 x‘ = x+116 write(B, x‘)17 u‘ = u+118 write(A, u‘)19 commit

Start Checkpoint

“commit“ bedeutet “output(X)“ aller Felder X der Transaktion

Annahme: Nicht-blockierendesCheckpointing

21.01.19 / 23.01.19 Tobias Bleifuß

Page 27: Übung Datenbanksysteme II Recovery · Nachbesprechung Hausaufgabe 5 Übung DBS II – Recovery 3 Problem: Selektionsergebnis: 18 Tupel V(Y,d) = 60 Man rechnet trotzdem mit 60 weiter,

UNDO

<START T3>

<START T1>

<T3,B,t>

<COMMIT T3>

<START T2>

<T2,B,v>

<COMMIT T2>

<T1,B,x>

<START CKPT (T1)> <T1,A,u>

<COMMIT T1><END CKPT>

Übung DBS II –Recovery

27

T1 T2 T31 start2 read(B, t)3 t‘ = t+14 start5 read(A, u)6 write(B, t‘)7 commit8 start9 read(B, v)10 read(A, w)11 v‘ = v+w12 write(B, v‘)13 commit14 read(B, x)15 x‘ = x+116 write(B, x‘)17 u‘ = u+118 write(A, u‘)19 commit

T.commit vor <COMMIT T>

wartet auf <COMMIT T1>

21.01.19 / 23.01.19 Tobias Bleifuß

Page 28: Übung Datenbanksysteme II Recovery · Nachbesprechung Hausaufgabe 5 Übung DBS II – Recovery 3 Problem: Selektionsergebnis: 18 Tupel V(Y,d) = 60 Man rechnet trotzdem mit 60 weiter,

UNDO

<START T3>

<START T1>

<T3,B,t>

<COMMIT T3>

<START T2>

<T2,B,v>

<COMMIT T2>

<T1,B,x>

<START CKPT (T1)> <T1,A,u>

<COMMIT T1><END CKPT>

Übung DBS II –Recovery

28

T1 T2 T31 start2 read(B, t)3 t‘ = t+14 start5 read(A, u)6 write(B, t‘)7 commit8 start9 read(B, v)10 read(A, w)11 v‘ = v+w12 write(B, v‘)13 commit14 read(B, x)15 x‘ = x+116 write(B, x‘)17 u‘ = u+118 write(A, u‘)19 commit

T.commit vor <COMMIT T>

wartet auf <COMMIT T1>

21.01.19 / 23.01.19 Tobias Bleifuß

Page 29: Übung Datenbanksysteme II Recovery · Nachbesprechung Hausaufgabe 5 Übung DBS II – Recovery 3 Problem: Selektionsergebnis: 18 Tupel V(Y,d) = 60 Man rechnet trotzdem mit 60 weiter,

REDO<START T3>

<START T1><T3,B,t’>

<COMMIT T3>

<START T2>

<T2,B,v’><COMMIT T2>

<T1,B,x’><START CKPT (T1)>

<END CKPT> <T1,A,u‘><COMMIT T1>

Übung DBS II –Recovery

29

T1 T2 T31 start2 read(B, t)3 t‘ = t+14 start5 read(A, u)6 write(B, t‘)7 commit8 start9 read(B, v)10 read(A, w)11 v‘ = v+w12 write(B, v‘)13 commit14 read(B, x)15 x‘ = x+116 write(B, x‘)17 u‘ = u+118 write(A, u‘)19 commit

<COMMIT T> vor T.commit

Muss nicht warten

21.01.19 / 23.01.19 Tobias Bleifuß

Page 30: Übung Datenbanksysteme II Recovery · Nachbesprechung Hausaufgabe 5 Übung DBS II – Recovery 3 Problem: Selektionsergebnis: 18 Tupel V(Y,d) = 60 Man rechnet trotzdem mit 60 weiter,

REDO<START T3>

<START T1><T3,B,t’>

<COMMIT T3>

<START T2>

<T2,B,v’><COMMIT T2>

<T1,B,x’><START CKPT (T1)>

<END CKPT> <T1,A,u‘><COMMIT T1>

Übung DBS II –Recovery

30

T1 T2 T31 start2 read(B, t)3 t‘ = t+14 start5 read(A, u)6 write(B, t‘)7 commit8 start9 read(B, v)10 read(A, w)11 v‘ = v+w12 write(B, v‘)13 commit14 read(B, x)15 x‘ = x+116 write(B, x‘)17 u‘ = u+118 write(A, u‘)19 commit

<COMMIT T> vor T.commit

Muss nicht warten

21.01.19 / 23.01.19 Tobias Bleifuß

Page 31: Übung Datenbanksysteme II Recovery · Nachbesprechung Hausaufgabe 5 Übung DBS II – Recovery 3 Problem: Selektionsergebnis: 18 Tupel V(Y,d) = 60 Man rechnet trotzdem mit 60 weiter,

UNDO/REDO

<START T3>

<START T1><T3,B,t,t‘>

<COMMIT T3>

<START T2>

<T2,B,v,v’>

<COMMIT T2>

<T1,B,x,x’>

<START CKPT (T1)>

<T1,A,u, u‘>

<COMMIT T1><END CKPT>

Übung DBS II –Recovery

31

T1 T2 T31 start2 read(B, t)3 t‘ = t+14 start5 read(A, u)6 write(B, t‘)7 commit8 start9 read(B, v)10 read(A, w)11 v‘ = v+w12 write(B, v‘)13 commit14 read(B, x)15 x‘ = x+116 write(B, x‘)17 u‘ = u+118 write(A, u‘)19 commit

wartet bis Daten aus Pufferauf Disk sind

<COMMIT T> vor/nach T.commit

21.01.19 / 23.01.19 Tobias Bleifuß

Page 32: Übung Datenbanksysteme II Recovery · Nachbesprechung Hausaufgabe 5 Übung DBS II – Recovery 3 Problem: Selektionsergebnis: 18 Tupel V(Y,d) = 60 Man rechnet trotzdem mit 60 weiter,

UNDO/REDO

<START T3>

<START T1><T3,B,t,t‘>

<COMMIT T3>

<START T2>

<T2,B,v,v’>

<COMMIT T2>

<T1,B,x,x’>

<START CKPT (T1)>

<T1,A,u, u‘>

<COMMIT T1><END CKPT>

Übung DBS II –Recovery

32

T1 T2 T31 start2 read(B, t)3 t‘ = t+14 start5 read(A, u)6 write(B, t‘)7 commit8 start9 read(B, v)10 read(A, w)11 v‘ = v+w12 write(B, v‘)13 commit14 read(B, x)15 x‘ = x+116 write(B, x‘)17 u‘ = u+118 write(A, u‘)19 commit

wartet bis Daten aus Pufferauf Disk sind

<COMMIT T> vor/nach T.commit

21.01.19 / 23.01.19 Tobias Bleifuß

Page 33: Übung Datenbanksysteme II Recovery · Nachbesprechung Hausaufgabe 5 Übung DBS II – Recovery 3 Problem: Selektionsergebnis: 18 Tupel V(Y,d) = 60 Man rechnet trotzdem mit 60 weiter,

Beim UNDO-Logging werden Daten-I/O-Operationen häufiger ausgeführt als beim REDO-Logging.

Beim UNDO-Logging müssen alle veränderten Blocks im Puffer verbleiben bis Commit- und Change-Logs auf Disk geschrieben sind.

Ein REDO-Log lässt sich schneller wiederherstellen als ein UNDO-Log.

Beim Recovery mit nicht-blockierendem Checkpointing muss das Log-File maximal bis zum ersten <START CKPT …> rückwärts durchlaufen werden.

Quiz: Richtig oder Falsch?Logging Techniken

Übung DBS II –Recovery

33

Falsch Dies gilt für das REDO-Logging! Beim UNDO-Logging werden die Daten-blocks vor dem Commit-Log aufdie Festplatte geschrieben.

Wahr Da die Daten sofort am Ende einer Transaktion geschrieben werden müssen um diese abschließen zu können, sind die I/O-Operationen beim UNDO-Logging häufiger.

Falsch Da es in einem Log in der Regel wesentlich mehr abgeschlossene als offene Transaktionen gibt, dauert einREDO aller abgeschlossenen Transaktionen länger als ein UNDO aller offenen Transaktionen.

Falsch UNDO: Falls <START CKPT …> vor <END CKPT> gelesen wird, müssen wir weiter rückwärts lesen.REDO: Wir gehen in jedem Fall über das <START CKPT …> hinaus.

21.01.19 / 23.01.19 Tobias Bleifuß

Page 34: Übung Datenbanksysteme II Recovery · Nachbesprechung Hausaufgabe 5 Übung DBS II – Recovery 3 Problem: Selektionsergebnis: 18 Tupel V(Y,d) = 60 Man rechnet trotzdem mit 60 weiter,

Aufgabenblatt 6

21.01.19 / 23.01.19 Tobias Bleifuß

Übung DBS II –Recovery

34

Page 35: Übung Datenbanksysteme II Recovery · Nachbesprechung Hausaufgabe 5 Übung DBS II – Recovery 3 Problem: Selektionsergebnis: 18 Tupel V(Y,d) = 60 Man rechnet trotzdem mit 60 weiter,

Aufgabenblatt 6

21.01.19 / 23.01.19 Tobias Bleifuß

Übung DBS II –Recovery

35

Page 36: Übung Datenbanksysteme II Recovery · Nachbesprechung Hausaufgabe 5 Übung DBS II – Recovery 3 Problem: Selektionsergebnis: 18 Tupel V(Y,d) = 60 Man rechnet trotzdem mit 60 weiter,

Aufgabenblatt 6

21.01.19 / 23.01.19 Tobias Bleifuß

Übung DBS II –Recovery

36

Page 37: Übung Datenbanksysteme II Recovery · Nachbesprechung Hausaufgabe 5 Übung DBS II – Recovery 3 Problem: Selektionsergebnis: 18 Tupel V(Y,d) = 60 Man rechnet trotzdem mit 60 weiter,

Aufgabenblatt 6

21.01.19 / 23.01.19 Tobias Bleifuß

Übung DBS II –Recovery

37

Page 38: Übung Datenbanksysteme II Recovery · Nachbesprechung Hausaufgabe 5 Übung DBS II – Recovery 3 Problem: Selektionsergebnis: 18 Tupel V(Y,d) = 60 Man rechnet trotzdem mit 60 weiter,

Aufgabenblatt 6

21.01.19 / 23.01.19 Tobias Bleifuß

Übung DBS II –Recovery

38