Log-Mechanismen
Der Log-Mechanismus ist ein zentrales Konzept im Datenbank-Recovery, da er die Grundlage für das Wiederherstellen von Transaktionen nach Fehlern bildet. Er funktioniert, indem alle Änderungen an der Datenbank in einer speziellen Datei, der Log-Datei (auch Journal genannt), protokolliert werden.
Formen des Logging
Logisches Logging
- DML-Operationen werden protokolliert, d.h. Aktionen wie ADD, UPDATE, DELETE von Daten
- Nachteil:
- Komplexe und zeitaufwendige Berechnung von inverser DML-Operationen für Rollback
Physisches Logging
Speichern von phyischen Änderungen auf den Datenblöcken
- After-Image-Protokoll, das den Zustand des Datenbank nach Änderung speichert.
- Before-Image-Protokoll, das den Zustand des Datenbank vor Änderung speichert.
Log-Datei
Inhalte der Log-Datei
- Laufende Nummer
- ID der Transaktion
- Art der Operation (BEGIN TANSATCTION, READ, WRITE,…)
- Betroffenes Objekt (Tabellen/Spaltenangabe bzw. Seite/Datensatz)
- Objektwert vor Operation (Before Image), welcher für UNDO benötigt wird
- Objektwert vor Operation (After Image), welcher für REDO benötigt wird
- Log-Management-Informationen (z.B. Zeiger auf den vorherigen Log-Eintrag für eine Transaktion)
Checkpoint-Mechanismus
Bei Fehlerfällen wird Checkpoint verwendet, um die Herstellung der Datenbank mit Hilfe der Log-Datei zu gewährleisten. (z.B. wie weit in Histore der Log-Datei zurückgehen?)
Ablauf vom Checkpoint
- Aussetzen der Transaktionsverarbeitung
- Schreiben aller ausstehenden Log-Einträge aus dem Hauptspeicher auf den Sekundärspeicher
- Schreiben aller modifizierten Datenblöcke aus dem Datenbank-Puffer auf den Sekundärspeicher
- Schreiben eines speziellen Checkpoint-Eintrags in die Log-Datei (enthält auch die IDs der zu diesem Zeitpunkt aktiven Transaktionen)
- Wiederaufnahme der Transaktionsverarbeitung
Bei Fehlerfälle
-
REDO aller Transaktionen, die seit letztem Checkpoint COMMIT ausgeführt haben
-
UNDO aller zum Fehlerzeitpunkt aktiven Transaktionen
-
Was ist UNDO und REDO
- UNDO: Rückgängigmachen von Änderungen noch nicht committeter Transaktionen → garantiert Dauerhaftigkeit.
- REDO: Wiederherstellen von Änderungen commitetter Transaktionen, die noch nicht dauerhaft gespeichert wurden → garantiert Atomarität.
Anmerkung zu Log-Datei in der Praxis
Häufig werden zwei separate Log-Dateien verwendet
- Rückwärts-Logdatei für Transaktionsabbrüche.
- Vorwärts-Logdatei für die Wiederherstellung bei z.B. Medienfehlern.
Zusammenfassung
Zusammenfassend lässt sich sagen, dass der Log-Mechanismus ein grundlegendes Werkzeug für die Datenbank-Recovery ist. Er ermöglicht die präzise Nachverfolgung aller Änderungen und bildet die Basis für die Wiederherstellung der Datenbank in einen konsistenten Zustand nach Fehlern.