Top-Fragen
Zeitleiste
Chat
Kontext

WAL-Prinzip

Aus Wikipedia, der freien Enzyklopädie

Remove ads

Das sogenannte write ahead logging (WAL) ist ein Verfahren der Datenbanktechnologie, das zur Gewährleistung der Atomarität und Dauerhaftigkeit von Transaktionen beiträgt. Es besagt, dass Modifikationen vor dem eigentlichen Schreiben (dem Einbringen in die Datenbank) protokolliert werden müssen.[1]

Funktionsweise

Zusammenfassung
Kontext

Durch das WAL-Prinzip wird ein sogenanntes „update-in-place“ ermöglicht, d. h. die alte Version eines Datensatzes wird durch die neue Version an gleicher Stelle überschrieben.[2] Das hat vor allem den Vorteil, dass Indexstrukturen bei Änderungsoperationen nicht mit aktualisiert werden müssen, weil die geänderten Datensätze immer noch an der gleichen Stelle zu finden sind. Die vorherige Protokollierung einer Änderung ist erforderlich, um im Fehlerfall die Wiederholbarkeit der Änderung sicherstellen zu können. Durch dieses Verfahren ist es nicht notwendig, Daten-Seiten bei jedem Transaktionsabschluss auf die Festplatte zu schreiben. Im Falle des Verlustes der Integrität kann die Datenbank mithilfe des Protokolls wiederhergestellt werden, indem alle Änderungen, die nicht auf die Daten-Seiten angewendet wurden, aus dem Protokoll neu durchgeführt werden (Roll-Forward-Recovery oder REDO).[3] WAL führt zu einer erheblichen Reduzierung der Festplattenschreibvorgänge, da nur die Protokolldatei auf die Festplatte geschrieben werden muss, um eine Transaktion zu bestätigen, anstatt jede durch die Transaktion geänderte Datenbankdatei. Dies ist besonders vorteilhaft für Server, die viele kleine Transaktionen verarbeiten und auf verschiedene Bereiche des Datenspeichers zugreifen, da die Protokolldatei sequentiell geschrieben wird. Durch Archivieren der WAL-Daten ist es möglich, zu jedem Zeitpunkt, der durch die verfügbaren Protokolldaten abgedeckt ist, zurückzukehren. Dabei wird einfach eine frühere physische Sicherung der Datenbank rückgesichert, und das Protokoll wird bis zum gewünschten Zeitpunkt wieder abgespielt.[4]

Remove ads

Vergleich

Beim herkömmlichen Rollback-Journal wird eine Kopie des unveränderten Originaldatenbankinhalts in eine separate Rollback-Journal-Datei geschrieben, und die Änderungen werden dann direkt in die Datenbankdatei geschrieben. Im Falle des Verlustes der Integrität oder eines ROLLBACK wird der ursprüngliche Inhalt des Rollback-Journals in die Datenbankdatei zurückgespielt, um die Datenbankdatei in ihren ursprünglichen Zustand zurückzubringen. Das COMMIT erfolgt, wenn das Rollback-Journal gelöscht wird. Der WAL-Ansatz kehrt dies um. Der ursprüngliche Inhalt bleibt in der Datenbankdatei erhalten, und die Änderungen werden an eine separate WAL-Datei angehängt. Ein COMMIT tritt auf, wenn ein spezieller Datensatz, der einen Commit anzeigt, an die WAL-Datei angehängt wird. Somit kann ein COMMIT erfolgen, ohne dass jemals in die ursprüngliche Datenbank geschrieben wird, was Lesezugriffe auf die ursprüngliche, unveränderte Datenbank ermöglicht, während gleichzeitig Änderungen in die WAL übertragen werden. Mehrere Transaktionen können an das Ende einer einzigen WAL-Datei angehängt werden.[5]

Remove ads

Einzelnachweise

Loading related searches...

Wikiwand - on

Seamless Wikipedia browsing. On steroids.

Remove ads