Zurück zur Übersicht

Begriff

WAL (Write-Ahead Logging)

Database System S3
2 Quellen 0 Lernpfade 0 Backlinks enriched

Warum wichtig?

Dieser Begriff ist ein Knoten im SengakujiWorks-Wissensnetz. Nutze Level 0 für die erste Einordnung, Level 1 für Praxis, Level 2 für technische Struktur und Level 3 für Grenzen, Fallstricke und Expertenkontext.

Datenbanken speichern Daten im RAM (schnell). Aber RAM ist flüchtig (Strom weg = Daten weg). Wie garantiert man, dass eine Transaktion "Durable" (Dauerhaft) ist? Die Regel: Logge es, bevor du es tust. Bevor die DB irgendwas in die echte Datendatei schreibt, schreibt sie die Änderung in ein Logfile (Append-Only). Erst wenn das Logfile auf der Platte ist (fsync), sagt die DB "Success". Wenn der Strom ausfällt: Beim Neustart liest die DB das Log ("Replay"). "Ah, hier steht, ich wollte X=5 setzen. Habe ich das getan? Nein. Also tue ich es jetzt." Das ist der Standard-Trick für Zuverlässigkeit in PostgreSQL, MySQL, Oracle und Filesystemen (ext4, NTFS).

Merksatz: Ein Verfahren zur Gewährleistung der Atomarität und Dauerhaftigkeit (Durability) in Datenbanksystemen, bei dem alle Änderungen zuerst in ein sequenzielles Protokoll geschrieben werden, bevor sie in den eigentlichen Datenbestand übernommen werden.


Quick-Check

  1. Warum Append-Only?
    Sequenzielles Schreiben ist auf HDDs 100x schneller als Random Write. Das WAL muss extrem schnell sein, weil jeder Commit darauf wartet.
  2. Checkpoints?
    Wenn das WAL unendlich wächst, dauert Recovery ewig. Checkpoint heißt: "Ich schreibe jetzt alles vom RAM auf die Platte." Danach kann man das alte WAL löschen.
  3. No-Steal/Force?
    Datenbank-Theorie-Begriffe. WAL erlaubt "Steal" (Buffer Manager darf unfertige Daten auf Platte schreiben, weil Undo möglich) und "No-Force" (Muss bei Commit nicht Daten, sondern nur Log schreiben).