Write-Ahead-Logging

Beim Prinzip des Write Ahead Logging (WAL) werden bei Datenbanken vor dem eigentlichen Ausführen von Transaktionen diese in einer Logdatei protokolliert, so dass die Transaktion im Falle eines Schreibfehlers  oder sonstigen auftretenden Fehlers wiederholt werden kann bzw. auch wieder rückgängig gemacht werden kann.  Durch das Write Ahead Logging wird die Konsistenz und Atomarität der Datenbank gesichert.

Vorteile des Write-Ahead-Logging 
Die Vorgehensweise des Write Ahead Logging hat mehrere Vorteile: die notwendigen Schreibvorgänge auf der Festplatte verringern sich, da die Datenseiten nach jeder Transaktion nicht zurückgeschrieben werden müssen, denn die Datenbank  ist im Falle eines Absturzes durch die Logdateien wiederherstellbar. Bei Multi-User Umgebungen können die Commits vieler Transaktionen mit einem Aufruf der fsync-Funktion für die Logdatei bewältigt werden. Die Logdatei ist i.d.R.  sequentiell aufgebaut, so dass der Synchronisationsvorgang der Logdatei Ressourcensparender ist als das Zurückschreiben auf die Festplatte.

Update-in-Place
Ein weiterer Vorteil ist dass ein "Update-in-Place" möglich ist.  Update-in-Place bedeutet, dass ein Datensatz an derselben Stelle überschrieben werden kann. In diesem Fall müssen die Indexstrukturen nicht mehr bei Transaktionen geändert werden, da die entsprechenden Datensätze sich noch an derselben Stelle befinden. 

REDO und UNDO 
Wenn Änderungen der Datenseiten zunächst in einer Logdatei festgehalten werden, so nennt man das REDO oder Vorwärts-Wiederherstellung. Wenn Änderungen bei nicht abgeschlossenen Transaktionen aus den Datenseiten entfernt werden so nennt man das UNDO  (Rückwärts-Wiederherstellung).

Zukünftige Entwicklungen 
In Zukunft wird es mit UNDO möglich sein Sicherungspunkte zu erstellen, mit deren Hilfe auf den Transaktionen ein Roll-Back durchführbar ist. So können fehlerhafte Transaktionsoperationen, wie z. B. das Einfügen doppelter  Primärschlüssel, zurückgeführt werden. WAL bietet in Zukunft auch neue Möglichkeiten der Datensicherung und Datenwiederherstellung: indem man die Datendateien auf einem externen Laufwerk oder einem zweiten Server  regelmäßig sichert und die Log-Dateien archiviert kann man die Datensicherung und Datenwiederherstellung bewerkstelligen. 

Einsatz von Write-Ahead-Logging
Write-Ahead-Logging wird z. B. Bei PostgreSQL oder bei der Microsoft Jet Blue Engine eingesetzt.                               
Siehe auch:    datenbank   MySQL   Microsoft-Access   Konsistenz   ACID   2-Phase-Commit   NoSQL