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.