Prof. Dr. T. Kudraß1 Recovery. Prof. Dr. T. Kudraß2 Fehlerarten: Transaktionsfehler Transaktionsfehler –Freiwilliger Transaktionsfehler durch eine ROLLBACK-Anweisung.

Slides:



Advertisements
Ähnliche Präsentationen
Kapitel 15 Verteilte Datenbanken
Advertisements

Transaktionsverwaltung Beispiel einer typischen Transaktion in einer Bankanwendung: 1.Lese den Kontostand von A in die Variable a: read(A,a); 2.Reduziere.
Prof. Dr. T. Kudraß1 Hash-Verfahren. Prof. Dr. T. Kudraß2 Einführung Drei Alternativen, wie Dateneinträge k* im Index aussehen können: 1. Datensatz mit.
Prof. Dr. T. Kudraß1 Einführung. Prof. Dr. T. Kudraß2 Dateisysteme Datei (File) –Zusammenfassung von Sätzen des gleichen Typs Satz (Record) –Sequenz von.
Einführung 1.
C. Mohan, Bruce Lindsay and R. Obermarck
© A. Kemper / A. Eickler1 Fehlerbehandlung (Recovery) 1.Lokaler Fehler in einer noch nicht festgeschriebenen (committed) Transaktion Wirkung muss zurückgesetzt.
1 Fehlerbehandlung (Recovery) 1.Lokaler Fehler in einer noch nicht festgeschriebenen (committed) Transaktion Wirkung muss zurückgesetzt werden R1-Recovery.
Transaktionsverwaltung Beispiel einer typischen Transaktion in einer Bankanwendung: 1.Lese den Kontostand von A in die Variable a: read(A,a); 2.Reduziere.
1 Fehlerbehandlung (Recovery) 1.Lokaler Fehler in einer noch nicht festgeschriebenen (committed) Transaktion Wirkung muss zurückgesetzt werden R1-Recovery.
Gottfried Vossen 5. Auflage 2008 Datenmodelle, Datenbanksprachen und Datenbankmanagementsysteme Kapitel 22: Grundlagen der Crash Recovery.
Transaktionen in verteilten Datenbanken
Das Relationenmodell 1.
Prof. Dr. T. Kudraß1 Speicherverwaltung: Platten und Dateien.
Prof. Dr. T. Kudraß1 Verteilte Datenbanken. Prof. Dr. T. Kudraß2 Einführung Daten sind auf mehreren Knoten (Sites) gespeichert, jeweils verwaltet durch.
Prof. Dr. T. Kudraß1 Integrität in Datenbanken. Prof. Dr. T. Kudraß2 Unterschied Konsistenz - Integrität Konsistenz beschreibt die Korrektheit der DB-internen.
Datenbanksysteme für FÜ WS 2004/2005 Transaktionen 1 Worzyk FH Anhalt Transaktionen und Parallelverarbeitung Eigenschaften von Transaktionen Konsistenz.
Datenbanksysteme für FÜ SS 2000 Seite Worzyk FH Anhalt Transaktionen und Parallelverarbeitung Eigenschaften von Transaktionen Konsistenz Isolation.
Kapitel 14: Recovery Oliver Vornberger
1 Kapitel 12: Transaktionsverwaltung Oliver Vornberger Fachbereich Mathematik/Informatik Universität Osnabrück Osnabrück
1 Kapitel 12: Transaktionsverwaltung. 2 Transaktion Bündelung mehrerer Datenbankoperationen Mehrbenutzersynchronisation Recovery.
15.1 Synchronisation nebenläufiger Prozesse
Erhard Künzel für Info 9. Klasse: Digitale Schule Bayern© Erhard Künzel.
Zuverlässigkeit und Recovery in der Segmentschicht
Universität Karlsruhe (TH) © 2008 Univ,Karlsruhe, IPD, Prof. LockemannDBI 7 Kapitel 7 Zugriffsschicht: Zuverlässigkeit.
Recovery AIFB SS Recovery 5.1 Fehler im Datenbankbetrieb(1/10) (1)Transaktionsfehler (TF) (2)Systemfehler (SF) (3)Speicherfehler (SpF) Fehlerfallen.
Recovery AIFB SS Einbringstrategie der Pufferverwaltung(1/4) Die bestimmt, wann geänderte Seiten in die Datenbank eingebracht werden. Sie.
Recovery AIFB SS (1/8) Sicherungspunkte (Checkpoints) (1/8) (1) Transaktions-Orientierte Sicherungspunkte Transaction-Oriented Checkpoint.
Ausführungsmodell Zustandsübergang einer Transaktion aus Nutzersicht:
Implementierung von S2PL (1) Scheduler als Verwalter von Sperren auf Datenelementen sowie Warteschlangen für Sperren (Sperren-Verwalter). Transaktion 1Transaktion.
Modellierung von Transaktionen Zur Formalisierung der ACID-Garantien muss Verhalten von Transaktionen modelliert werden. Folge aus der Forderung nach lokaler.
Synchronisation paralleler Transaktionen AIFB SS Konzept der Transaktion 4.2 Konzept der Transaktion (1/4) Eine Transaktion ist ein in sich geschlossener,
Betriebliche Informationssysteme Prof. Dr. Michael Löwe
Gottfried Vossen 5. Auflage 2008 Datenmodelle, Datenbanksprachen und Datenbankmanagementsysteme Kapitel 21: Concurrency Control.
Effiziente Algorithmen
WS 2012/13 Datenbanksysteme Mi 15:15 – 16:45 R Vorlesung #11 Transaktionsverwaltung.
WS 2004/2005 Datenbanken II - 5W Mi 17:00 – 18:30 G 3.18 Vorlesung #6 Fehlerbehandlung.
WS 2011/12 Datenbanksysteme Mi 15:15 – 16:45 R Vorlesung #10 Transaktionsverwaltung.
Vorlesung #9 Fehlerbehandlung
Transaktion Huang Zhenhao FU Shuai.
Datenbanksysteme Technische Grundlagen Transaktions-Konzept, Mehrbenutzer-Synchronisation, Fehlerbehandlung Prof. Dr. Manfred Gruber FH München.
Vorlesung Datenbanksysteme WS 2.0 Christoph Koch (Subject: DBVO:...
ADAT©2004,2006 Dipl. - Ing. Walter SabinSeite: 48 Version 1.0a Recovery Wiederherstellung eines konsistenten Datenbankzustandes nach Fehlersituationen.
Lokales 2-Phasen-Festschreibe- Protokoll Segment-Verwalter führt commit(T i ) in zwei Phasen aus: Phase 1: Sicherstellung der Wiederholbarkeit. –Für jedes.
Übung: Transaktionale Systeme
Transaktionen Dr. Heidrun Bethge Datenbanken II.
Fehlerbehandlung (Recovery)
Transaktionsverwaltung
Prof. Dr. T. Kudraß1 Einführung. Prof. Dr. T. Kudraß2 Informationsflut Motivation –Komplexe Datenstrukturen –Aktuelle, richtige, redundanzfreie Daten.
Wiederanlauf nach Systemzusammenbruch Aufgabe: Bei Noforce-Strategie Wiederholung aller noch nicht in die Datenbasis eingebrachten Änderungen bereits abgeschlossener.
Recovery    AIFB SS Grundlegende Annamen(1/2) Um den Erfolg der der Recovery-Maßnahmen zu gewährleisten, werden folgende Annahmen.
Synchronisation paralleler Transaktionen  AIFB SS Sperrverfahren Sperrverfahren (13/18) Behandlung von Konflikten bei der Sperrvergabe.
Semantische Integritätsbedingungen  AIFB SS Überwachung von Integritätsbedingungen (1/3) Dem DBMS muß mitgeteilt werden, wann eine Integritätsbedingung.
Sicherung gegen Medienverlust (1) Medienverlust = Verlust der Datenbasis und/oder des Protokolls. Vorbeugung durch periodische Sicherung von Datenbasis.
Recovery    AIFB SS (1/6) Durchführung der Recovery-Maßnahmen(1/6) Transaktions-Fehler (TF) T1 T2 T3 Zeitt Transaktion T2 wird vom.
unpin(a,b,c) flush(a,b,c)
Vs Verteilte Transaktionen Situation:Fragmentierung: Ein Datenbestand ist über mehrere Stationen verteilt (z.B. verteilte Datenbank, verteiltes Dateisystem,...)
6.3 Verteilte Transaktionen
Transaktionsverwaltung Beispiel einer typischen Transaktion in einer Bankanwendung: 1.Lese den Kontostand von A in die Variable a: read(A,a); 2.Reduziere.
Prof. Dr. T. Kudraß1 Transaktionsmanagement - Einführung.
Effektives Delta Laden DOAG SID Data Warehouse. Ziele Welche CDC Methoden gibt es? Typische Fallen Verschiedene Lösungsansätze praktische Beispiele.
Transaktionsverwaltung Beispiel einer typischen Transaktion in einer Bankanwendung: 1.Lese den Kontostand von A in die Variable a: read(A,a); 2.Reduziere.
Übung – Recovery Manager Undo Redo Algorithmus
6.3 Verteilte Transaktionen
Vorlesung #7 Fehlerbehandlung
Transaktionsabbruch, System Crash, Media Failure
Vorlesung #7 Fehlerbehandlung
Vorlesung #7 Fehlerbehandlung
Vorlesung #10 Fehlerbehandlung
Redo/Undo Ersetzungsstrategie: LRU
 Präsentation transkript:

Prof. Dr. T. Kudraß1 Recovery

Prof. Dr. T. Kudraß2 Fehlerarten: Transaktionsfehler Transaktionsfehler –Freiwilliger Transaktionsfehler durch eine ROLLBACK-Anweisung Unzulässige Dateneingabe Nicht erfolgreiche DB-Operation –Fehler im Transaktionsprogramm Division durch Null Adressierungsfehler –Systemseitiger Abbruch einer Transaktion Verletzung von Integritätsbedingungen Verletzung von Zugriffsbeschränkungen –Systemseitiger Abbruch einer oder mehrerer Transaktionen Auflösung von Deadlocks (Select a Victim) Behandlung von Systemüberlast (z.B. Sperr- oder Speicher- engpässe)

Prof. Dr. T. Kudraß3 Fehlerarten (Forts.) Systemfehler (Crash) –Weiterer Betrieb des DBS nicht mehr möglich Fehler der Hardware (z.B. Rechnerausfall) Fehler der Software (z.B. Datenbank- oder Betriebssystem) Umgebungsfehler (z.B. Stromausfall) –Verlust bzw. Verfälschung von Hauptspeicherinhalten –Datenbank auf Externspeicher unzerstört Geräte- bzw. Externspeicherfehler –Ausfall von Magnetplatten (Head Crash) –Rekonstruktion der durch den Ausfall verlorengegangenen Änderungen mittels Archivkopien Katastrophen-Recovery –Zerstörung eines ganzen Rechenzentrums (Verarbeitungsrechner und Externspeicher) aufgrund von Naturkatastrophen oder Anschlägen –Verhinderung eines Datenverlustes über verteilten Systemansatz

Prof. Dr. T. Kudraß4 Rückschau - Transaktionseigenschaften ACID-Prinzip –Atomicity:Alle Aktionen einer Transaktion sind erfolgreich oder gar keine (Atomarität) –Consistency:Eine Transaktion garantiert den Übergang von einem konsistenten DB-Zustand zu einem anderen konsistenten DB-Zustand (Konsistenz) –Isolation:Die Ausführung einer Transaktion ist isoliert von der Ausführung parallel ablaufender anderer Transaktionen –Durability:Wenn eine Transaktion Commit macht, ist ihre Wirkung persistent (Dauerhaftigkeit) Recovery-Manager –garantiert Atomarität und Dauerhaftigkeit –Ist abhängig von anderen Komponenten des DBMS: Einbringstrategie, Sperrverfahren, Pufferverwaltung

Prof. Dr. T. Kudraß5 Motivation Atomarität –Transaktionen können zurückgesetzt werden (Rollback) Dauerhaftigkeit –Was geschieht beim Absturz des DBMS (betrifft auch Puffer)? Synchronisation der Transaktionen vorausgesetzt Gewünschtes Verhalten nach einem Restart des Systems: –T1, T2 & T3 müssen dauerhaft sein –T4 & T5 sollten zurückgesetzt werden (keine sichtbaren Effekte hinterlassen) crash! T1 T2 T3 T4 T5 Beispiel-Szenario

Prof. Dr. T. Kudraß6 Einbringstrategien Indirekte Einbringstrategien –Ausschreiben geänderter DB-Seiten in separate Blöcke, so daß ursprüngliche Blöcke ungeändert bleiben –Ausschreiben einer Seite bringt diese noch nicht in die materialisierte Datenbank (erfordert separates Einbringen) –Führen von Seitentabellen, die Abbildung von Speicherseiten auf Plattenblöcke auf der Platte darstellen –Umschalten zwischen zwei Seitentabellen ermöglicht atomare Änderungen in der DB (Schattenspeicher-Konzept) –Bei Systemausfall konsistenter DB-Zustand verfügbar –Durch indirekte Seitenzuordnung Zerstörung der Clustereigenschaften Direkte Einbringstrategien (Update-in-Place) –Seite wird immer auf den gleichen Block zurückgeschrieben (somit direktes Überschreiben oder Löschen auf Platte) Weitere Betrachtungen basieren auf Update-in-Place Strategie

Prof. Dr. T. Kudraß7 Pufferverwaltung Ausschreiben schmutziger Änderungen? –No Steal: Seiten mit schmutzigen Änderungen dürfen nicht aus dem Puffer ersetzt (gestohlen) werden. Somit ist garantiert, daß die materialisierte Datenbank nach einem Crash keine Änderungen von nicht erfolgreich beendeten Transaktionen enthält. Keine Undo- Recovery notwendig. Blockiert für lange Änderungstransaktionen den Puffer (i.allg. mehr schmutzige Seiten als Puffergröße) –Steal: Erlaubt die Ersetzung schmutziger Seiten. Demnach ist nach einem Systemfehler eine Undo-Recovery erforderlich, um die Änderungen nicht erfolgreicher Transaktionen zurückzusetzen. Änderungen einer Transaktion bis zum Commit ausschreiben? –Force: Alle geänderten Seiten werden spätestens bis zum Transaktionsende (vor dem Commit) in die permanente DB geschrieben. Damit entfällt die Notwendigkeit einer Redo-Recovery nach einem Crash. –No Force: Verzichtet auf das Hinauszwingen der Änderungen, stattdessen können die Seiten nach Ende der ändernden TA geschrieben werden. Erfordert Redo-Recovery nach einem Crash für die erfolgreichen Transaktionen.

Prof. Dr. T. Kudraß8 Pufferverwaltung Steal: Beim Zurückschreiben einer Seite P muß der alte Wert der Seite zu diesem Zeitpunkt vermerkt werden, um UNDO möglich zu machen (Atomarität) No Force: Schreibe so wenig wie möglich (an einem sicheren Ort) Informationen über die modifizierten Seiten, zum Commit- Zeitpunkt einer Transaktion, um REDO möglich zu machen Force No Force No Steal Steal Trivial Gewünscht Warum nicht jedes Write auf die Platte schreiben (Force)? –Schlechte Antwortzeit –Garantiert aber Persistenz Ersetzung von Seiten von nicht- beendeten Transaktionen (Steal)? –Wenn nicht, schlechter Durchsatz –Wenn doch, wie kann Atomariät garantiert werden? Günstigste Strategie: No Force / Steal

Prof. Dr. T. Kudraß9 Idee: Logging Aufzeichnen der REDO and UNDO Information für jedes Update in einem Log –Sequentielles Schreiben auf das Log (auf einer separaten Platte) –Minimale Information (Differenz) ins Log schreiben, so daß mehrere Updates auf eine einzige Seite im Log passen Unterscheide physisches vs. logisches Protokollieren –Physisch: Speicherung der Log-Infos auf Ebene der physischen Objekte(z.B. Seiten) –Zustands-Logging: Zustände der Objekte vor und nach der Änderung (alter Zustand: Before-Image, neuer Zustand: After- Image) –Übergangs-Logging: Speicherung der Zustandsdifferenz –Logisch: Speicherung der Änderungsoperationen mit ihren Parametern (z.B. INSERT mit Attributwerten) –Garantiert minimalen Log-Umfang

Prof. Dr. T. Kudraß10 Write-Ahead Logging (WAL) Write-Ahead Logging Protokoll: Write-Ahead-Log-Prinzip: Vor dem Schreiben einer schmutzigen Änderung in die materialisierte Datenbank muß die zugehörige Undo-Information (z.B. Before-Image) in die Log-Datei geschrieben werden (Logging vor Schreiben in die Datenbank). Nur für Steal relevant. Commit-Regel: Vor dem Commit einer Transaktion sind für ihre Änderungen ausreichende Redo-Informationen (z.B. After-Images) zu sichern #1 garantiert Atomarität #2 garantiert Dauerhaftigkeit Beschreibung des Logging- und Recovery-Verfahrens am Beispiel des ARIES-Algorithmus (Vorbild für Recovery- Algorithmen in vielen DBMS)

Prof. Dr. T. Kudraß11 WAL & Log Log: Eine geordnete Liste von REDO/UNDO Aktionen –Log-Record enthält: –und zusätzliche Kontrollinformationen (siehe später) Jeder Log-Record hat eine eindeutige Log Sequence Number (LSN) –LSNs immer aufsteigend Jede Datenseite enthält eine pageLSN –Die LSN des jüngsten Log-Record für ein Update auf dieser Seite System kontrolliert die flushedLSN –Größte LSN, die aus dem RAM geflusht wurde WAL: Vor dem Schreiben einer Seite –pageLSN flushedLSN LSNs DB pageLSNs RAM flushedLSN pageLSN Log-Records flushed to disk Log Tail in RAM

Prof. Dr. T. Kudraß12 Log-Sätze Ein Log-Satz wird für jede der folgenden Aktionen geschrieben: Update –Nach Modifikation einer Seite wird pageLSN auf LSN des Update- Log-Record gesetzt Commit –Bei Entscheidung für Commit wird ein Commit-Record mit der Transaktions-ID geschrieben und auf Platte gezwungen (dann erst wirklich Commit der Transaktion OK) Abort –Wird bei Abort einer Transaktion geschrieben, Undo wird angestoßen End (bedeutet hier: Beendigung von Commit oder Abort) –Nach Beendigung zusätzlicher Aktionen bei Commit oder Abort Compensation Log Records (CLRs) –Beim Zurücksetzen einer Transaktion (UNDO) müssen Aktionen rückgängig gemacht werden; geschieht durch das Schreiben eines CLR

Prof. Dr. T. Kudraß13 Aufbau eines Log-Satzes prevLSN –Vorherige LSN (LSNs sind verkettet) transID –ID des Transaktion, die den Log-Satz erzeugt hat type –Typ des Log-Satzes: Update, Commit, Abort, End, CLR Für Update-Log-Records: pageID –ID der modifizierten Seite length –Länge offset –Position before-image –Alter Wert vor Änderung after-image –Neuer Wert nach Änderung

Prof. Dr. T. Kudraß14 Andere Datenstrukturen beim Recovery Transaktions-Tabelle –Ein Eintrag pro aktive Transaktion –Enthält transID (Transaktions-ID), Status (running/commited/aborted) und lastLSN (letzte vergebene LSN) Dirty Page-Tabelle –Ein Eintrag pro schmutzige Seite im Puffer –Enthält recLSN - die LSN des Log-Satzes, durch den erstmals die Seite schmutzig gemacht wurde

Prof. Dr. T. Kudraß15 Beispiel pageIDrecLSN P50005 P60010 P50520 transIDlastLSN T T LSNprevLSNtransIDtypepageIDlengthoffse t before- image after- image 05--T1000updateP500321ABCDEF 10--T2000updateP600341HIJKLM 1510T2000UpdateP500320GDEQRS 2005T1000updateP505321TUVWXY TRANSACTION TABLE DIRTY PAGE TABLE LOG

Prof. Dr. T. Kudraß16 Normale Ausführung einer Transaktion Folge von Read- und Write-Aktionen, abgeschlossen durch Commit oder Abort –Annahme: Write ist eine atomare Operation auf der Platte Zusätzliche Dinge wären notwendig bei der Behandlung nicht- atomarer Writes Striktes 2PL-Protokoll STEAL/NO-FORCE Pufferverwaltung mit Write-Ahead Logging

Prof. Dr. T. Kudraß17 Sicherungspunkte (Checkpoints) Sind Maßnahmen zur Begrenzung des Redo-Aufwandes nach Systemfehlern Redo-Recovery erforderlich für alle erfolgreich geänderten Seiten, die nur im DB-Puffer im Hauptspeicher - aber nicht in der materialisierten DB vorlagen Probleme bei Hot-Spot-Seiten (hohe Zugriffsrate), die nicht aus dem Puffer verdrängt werden und viele Änderungen aufweisen –Hoher Redo-Aufwand –Hoher Platzbedarf für den Log Direkte vs. Indirekte Checkpoints –Direkt: Ausschreiben aller geänderten Seiten in die mat. DB –Indirekt (Fuzzy Checkpoint): Protokollierung gewisser Status- informationen im Log Durchführung direkter Checkpoints sehr teuer (Abwägen zwischen Häufigkeit der Checkpoints und notwendigem Aufwand bei Redo-Recovery)

Prof. Dr. T. Kudraß18 Sicherungspunkte in ARIES begin_checkpoint Record: –Zeigt den Beginn des Checkpoint an end_checkpoint Record: –Enthält aktuelle Transaktions-Tabelle und Dirty Page-Tabelle. Dies ist somit ein `Fuzzy Checkpoint: Andere Transaktionen laufen weiter; somit stimmen diese Tabellen nur genau zu Zeitpunkt von begin_checkpoint Kein Versuch, schmutzige Seiten auf Platte zu zwingen Effektivität des Checkpoint begrenzt durch die älteste Änderung auf einer schmutzigen Seite (bestimmt durch recLSN) Abhilfe: Periodisches Ausschreiben schmutziger Seiten auf Platte (Flushing), löst auch das Problem der Hot Spots Speichere LSN des Checkpoint-Records an einem sicheren Ort (Master-Record)

Prof. Dr. T. Kudraß19 Big Picture: Was ist wo? DB Datenseiten jede mit einer pageLSN Trans.-Tabelle lastLSN status Dirty Page-Tabelle recLSN flushedLSN RAM prevLSN transID type length pageID offset before-image after-image Log-Records LOG Master-Record

Prof. Dr. T. Kudraß20 Abort einer Transaktion Zunächst betrachten wir den expliziten Abbruch einer Transaktion nach Transaktionsfehler (Abort) –Kein Systemfehler! Zurückspielen des Log in umgekehrter Richtung, Änderungen ungeschehen machen (UNDO) –Lese lastLSN der Transaktion aus der Transaktionstabelle –Zurückverfolgen der Kette der Log-Records über den prevLSN- Zeiger –Vor dem Start des UNDO: schreibe einen Abort-Log-Record Wichtig für Crash-Recovery während der UNDO-Phase (siehe später)

Prof. Dr. T. Kudraß21 Abort (Forts.) Zur Ausführung von UNDO muß eine Sperre auf den Daten vorhanden sein –Kein Problem! Vor der Wiederherstellung des alten Wertes der Seite, schreibe einen CLR: –Logging wird auch während UNDO fortgesetzt! –CLR hat ein Extra-Feld: undonextLSN Zeigt auf die nächste LSN zum undo (entspricht prevLSN des Satzes, der gerade rückgängig gemacht wird) –CLRs werden niemals rückgängig gemacht (höchstens REDO - garantiert Atomarität) Bei Ende von UNDO, schreibe einen End Log-Record

Prof. Dr. T. Kudraß22 Commit einer Transaktion Schreibe Commit-Satz ins Log Alle Log-Sätze bis zur lastLSN der Transaktion werden auf Platte ausgeschrieben (flush) –Garantiert die Einhaltung der Bedingung: flushedLSN lastLSN. –Log Flush = sequentielles synchrones Schreiben des Log-Puffers auf Platte –Viele Log-Sätze pro Log-Seite Ende der Commit() Prozedur (z.B. Freigabe der Sperren) Schreibe End-Satz ins Log

Prof. Dr. T. Kudraß23 Crash-Recovery: Big Picture Starte beim Checkpoint (ermitteln über Master-Record). Drei Phasen. –Bestimmen der Gewinner- und Verlierer- Transaktionen seit dem Checkpoint (Welche Commit? Welche Abort?) (Analyse). –REDO aller Aktionen (Wiederholung der Geschichte) –UNDO Effekte aller gescheiterten Transaktionen Ältester Log- Record einer TA, die beim Crash noch aktiv Kleinste recLSN in Dirty Page- Tabelle nach Analyse Letzter Checkpoint CRASH A RU

Prof. Dr. T. Kudraß24 Recovery: Analyse-Phase 3 Aufgaben: –Bestimme den Punkt im Log, an dem die REDO-Phase beginnen muß –Bestimme die Menge der Seiten im Puffer, die zum Crash-Zeitpunkt schmutzig waren –Identifiziere die Transaktionen, die zum Crash-Zeitpunkt aktiv waren und rückgängig gemacht werden müssen (UNDO) Rekonstruiere Zustand zum Checkpoint-Zeitpunkt –über end_checkpoint Satz Lese sequentiell vorwärts vom Checkpoint. –End Record: Entferne Transaktion aus Transaktionstabelle –Andere Records: Füge Transaktion zur Transaktionstabelle hinzu, setze lastLSN=LSN, ändere Transaktionsstatus (Commit oder Undo) –Update-Record: Wenn P nicht in Dirty-Page-Tabelle vorhanden: Füge P zur Dirty Page-Tabelle hinzu, setze ihren recLSN=LSN.

Prof. Dr. T. Kudraß25 Recovery: REDO-Phase Wir wiederholen den Ablauf, um den Zustand zum Zeitpunkt des Crash zu rekonstruieren: –Wiederholung aller Updates (auch der abgebrochenen Transaktionen!), Wiederholung der Compensation Log Records CLRs. Vorwärtslesen vom Log-Record, dessen LSN gleich der kleinsten recLSN in Dirty Page-Tabelle. Für jede LSN eines CLR oder Update-Log-Record, mache ein REDO der Aktion unter folgenden Voraussetzungen: –Betroffene Seite ist nicht in Dirty Page-Tabelle, oder –Betroffene Seite ist in Dirty Page-Tabelle, aber hat recLSN > LSN, oder –pageLSN (in DB) LSN. REDO einer Aktion: –Wiederholte Ausführung der geloggten Aktion –Setze pageLSN auf LSN. Kein zusätzliches Logging!

Prof. Dr. T. Kudraß26 Recovery: UNDO-Phase Zurücksetzen der Verlierer-Transaktionen in umgekehrter Reihenfolge ToUndo={ l | l lastLSN einer Verlierer-Transaktion } aus der Tabelle der aktiven Transaktionen Repeat: –Wähle größte LSN aus ToUndo. –Wenn diese LSN ein CLR ist und undonextLSN==NULL Schreibe einen End-Record für diese Transaktion –Wenn diese LSN eine CLR ist, und undonextLSN != NULL Füge undonextLSN zu ToUndo hinzu –Ansonsten ist diese LSN ein Update. Rückgängigmachen des Update, schreibe einen CLR, füge prevLSN zu ToUndo hinzu Until ToUndo is empty.

Prof. Dr. T. Kudraß27 Beispiel Recovery begin_checkpoint end_checkpoint update: T1 writes P5 update T2 writes P3 T1 abort CLR: Undo T1 LSN 10 T1 End update: T3 writes P1 update: T2 writes P5 CRASH, RESTART LSN LOG Xact Table lastLSN status Dirty Page Table recLSN flushedLSN ToUndo prevLSNs RAM

Prof. Dr. T. Kudraß28 Beispiel Recovery (Forts.) Phase 1: Analyse –Bestimmung der schmutzigen Seiten: P1 (mit recLSN = 50) P3 (mit recLSN = 20) P5 (mit recLSN = 10) –Bestimmung der zum Crash-Zeitpunkt aktiven Transaktionen T2 (mit lastLSN = 60) T3 (mit lastLSN = 50) T1 bereits beendet (End-Logsatz 45) Phase 2: Redo –Wiederholung aller Aktionen ab Log-Record 10 (= min. recLSN in Dirty- Page-Tabelle) Phase 3: Undo –ToUndo = {60, 50} für T2 und T3 (jeweils größte LSN pro Transaktion) –Beginne mit LSN = 60: Undo Log-Record 60; Schreibe CLR 70 –undoNextLSN = 20 (nächste Aktion für T2) –Weiter mit LSN = 50: Undo Log-Record 50; Schreibe CLR 80 –undoNextLSN = NULL (T3 komplett zurückgesetzt) -> Schreibe End-Record für T3 mit LSN 85 –usw....

Prof. Dr. T. Kudraß29 Beispiel Recovery (Forts.) begin_checkpoint, end_checkpoint update: T1 writes P5 update T2 writes P3 T1 abort CLR: Undo T1 LSN 10, T1 End update: T3 writes P1 update: T2 writes P5 CRASH, RESTART CLR: Undo T2 LSN 60 CLR: Undo T3 LSN 50, T3 end CRASH, RESTART CLR: Undo T2 LSN 20, T2 end LSN LOG 00, , ,85 90 Xact Table lastLSN status Dirty Page Table recLSN flushedLSN ToUndo undonextLSN RAM

Prof. Dr. T. Kudraß30 Zusammenfassung Logging / Recovery Recovery Manager garantiert Atomarität und Dauerhaftigkeit Write-Ahead-Logging (WAL), um STEAL/NO-FORCE Policy zu erlauben ohne Verzicht auf Korrektheit LSNs identifizieren Log-Sätze; sind rückwärtsverkettet pro Transaktione pageLSN erlaubt Vergleich von Datenseite und Log-Sätzen Checkpointing: Verfahren, um die Größe des Log zu begrenzen (verkürzt Recovery) Recovery arbeitet in 3 Phasen: –Analysis: Vorwärts vom Checkpoint. –Redo: Vorwärts von kleinster recLSN (ältester Log-Eintrag, der eine schmutzige Seite betrifft) –Undo: Rückwärts vom Ende bis zur ersten LSN der ältesten Transaktion, die zum Crash-Zeitpunkt aktiv war Undo heißt: Schreibe Compensation Log Record (CLR) Redo wiederholt Geschichte: Vereinfachte Logik