EMZETT.
Login

Write-Ahead-Log und Wiederherstellung

Kurz: Beim Write-Ahead-Log (WAL) wird jede Änderung zuerst in ein Protokoll auf der Platte geschrieben, bevor die eigentlichen Daten geändert werden. Nach einem Absturz lässt sich der Zustand daraus wiederherstellen.

Genauer: Das Protokoll wird nur angehängt (sequentiell, schnell). Ein Commit gilt als dauerhaft, sobald der Log-Eintrag sicher (fsync) geschrieben ist. Die Datenseiten dürfen später und gesammelt auf die Platte, denn im Notfall spielt die Wiederherstellung das Protokoll erneut ab.

Im Detail

  • Prinzip: Erst Log, dann Daten. Das stellt Atomarität und Dauerhaftigkeit (ACID) sicher.
  • Checkpoint: Markiert, bis wohin alles auf der Platte steht, damit der Log gekürzt werden kann.
  • Recovery (ARIES): Analyse, Redo (fehlende Änderungen nachholen), Undo (nicht abgeschlossene zurücknehmen).
  • Replikation: Der WAL wird auch an Replikate gestreamt (z. B. PostgreSQL).
  • Point-in-Time-Recovery: Zurück zu einem beliebigen Zeitpunkt durch Abspielen bis dorthin.
  • Kosten: fsync ist teuer. Gruppen-Commit bündelt mehrere Transaktionen.

Siehe auch: Datenbank-Transaktionen und ACID, LSM-Tree und Sorted String Tables