Datenbanken

Undo Log: Definition, Erklärung & Beispiele

  • 5 Min. Lesezeit
  • Aktualisiert am 12.11.2026
  • Schwierigkeit: Mittel

Das Wichtigste in Kürze

Was ist Undo Log?

Ein Undo Log ist eine zentrale Komponente der InnoDB-Storage-Engine in MySQL und MariaDB, die den vorherigen Zustand von Daten speichert, um Rollbacks und Multi-Version Concurrency Control (MVCC) zu ermöglichen. Er spielt eine entscheidende Rolle bei der Wiederherstellung der Datenkonsistenz nach Systemabstürzen, indem er Änderungen nicht abgeschlossener Transaktionen rückgängig macht.

Undo Log: Definition, Erklärung & Beispiele – hier finden Sie die Kurzdefinition, die ausführliche Erklärung und Praxisbeispiele im Überblick.

Kategorie
Datenbanken
Erstveröffentlichung/Ursprung
MySQL, InnoDB
Typische Verwendung
Datenkonsistenz und Transaktionsmanagement
Schwierigkeitsgrad
Mittel
Lizenz/Hersteller
MySQL AB, Oracle Corporation

Ausführliche Erklärung

Definition und Grundkonzept des Undo Logs

Ein Undo Log ist eine zentrale Komponente der InnoDB-Storage-Engine, die in MySQL und MariaDB verwendet wird. Der Undo Log speichert den vorherigen Zustand von Daten, bevor eine Transaktion Änderungen vornimmt. Dies ermöglicht, dass bei Bedarf Rollbacks durchgeführt werden können, um die Datenkonsistenz wiederherzustellen. Durch die Speicherung von Vorher-Zuständen (auch als „before-image“ bekannt) erfüllt der Undo Log eine entscheidende Rolle in der Multi-Version Concurrency Control (MVCC), die die gleichzeitige Datenbearbeitung durch mehrere Transaktionen unterstützt.

Funktionsweise und Architektur des Undo Logs

Der Undo Log operiert auf logischer Ebene, was bedeutet, dass die Protokollierung auf transaktionsbasierte Änderungen fokussiert ist und nicht direkt physische Speicheränderungen dokumentiert. Diese Trennung ist wichtig, da sie es ermöglicht, dass lesende Transaktionen konsistente Daten-Snapshots erhalten, ohne dass schreibende Transaktionen blockiert werden müssen. Im Kontext von MySQL wird jeder Undo Log in einem speziellen Speicherbereich organisiert, der aus Undo Segments, Rollback Segments und Undo Tablespaces besteht.

Ein Undo-Log-Record enthält spezifische Informationen darüber, wie die letzte Änderung einer Transaktion an einem clustered index record rückgängig gemacht werden kann. Dies ist besonders wichtig, wenn eine andere Transaktion den ursprünglichen Wert benötigt, um konsistente Lesungen zu gewährleisten. Der Undo Log ist somit ein essenzieller Bestandteil der ACID-Eigenschaften (Atomicity, Consistency, Isolation, Durability) von Datenbanksystemen.

Rolle des Undo Logs bei der Datenkonsistenz und Crash Recovery

Der Undo Log spielt eine entscheidende Rolle bei der Wiederherstellung der Datenkonsistenz nach einem Systemabsturz (Crash Recovery). Bei einem Absturz werden alle Änderungen, die von nicht abgeschlossenen (uncommitted) Transaktionen vorgenommen wurden, durch den Undo Log rückgängig gemacht. In diesem Zusammenhang ist es wichtig zu beachten, dass der Redo Log die Änderungen von abgeschlossenen Transaktionen wiederherstellt. Diese duale Protokollierung gewährleistet, dass das Datenbanksystem in einen konsistenten Zustand zurückversetzt werden kann.

In MySQL 9.7 (Stand 2026) unterstützt jeder Undo Tablespace maximal 128 Rollback-Segmente, und eine Transaktion kann bis zu vier Undo-Logs für unterschiedliche Operationstypen (INSERT, UPDATE, DELETE) erhalten. Diese Flexibilität ermöglicht eine effiziente Handhabung von Transaktionen und deren Rückgängig-Machung.

Purge-Mechanismus und Undo-Log-Bloat

Um die Effizienz des Undo Logs zu gewährleisten, sind Purge-Threads implementiert, die veraltete Undo-Log-Einträge automatisch aufräumen, sobald keine aktive Transaktion mehr auf sie zugreift. Dies verhindert, dass der Undo Log unnötig wächst und die Performance der Datenbank beeinträchtigt. Jedoch können lange laufende oder abgebrochene Transaktionen zu einem Phänomen führen, das als Undo-Log-Bloat bekannt ist. Dieses beschreibt die Ansammlung von Undo-Log-Einträgen, die nicht mehr benötigt werden, aber nicht gelöscht werden können, da sie von aktiven Transaktionen gehalten werden.

Abgrenzung zu anderen Datenbanksystemen

Das Konzept des Undo Logs unterscheidet sich deutlich von der Funktionsweise anderer Datenbanksysteme wie PostgreSQL. Während PostgreSQL keine separaten Undo-Logs verwendet, speichert es alte Versionen direkt in den Datenblättern. Im Gegensatz dazu setzen MySQL, Oracle und SQL Server explizit Undo-Logs ein, um Rollbacks und Datenkonsistenz zu gewährleisten. Diese Unterschiede in der Implementierung führen zu unterschiedlichen Ansätzen bei der Verwaltung von Transaktionen und der Gewährleistung der Datenintegrität.

Zusammenfassend lässt sich sagen, dass der Undo Log eine unverzichtbare Komponente der InnoDB-Storage-Engine darstellt, die nicht nur eine wichtige Rolle bei der Verwaltung von Transaktionen spielt, sondern auch maßgeblich zur Datenintegrität und Konsistenz beiträgt. Seine Architektur und Funktionsweise sind entscheidend für die effiziente Handhabung von parallelen Transaktionen und die Sicherstellung der ACID-Eigenschaften im Datenbanksystem.

Typische Einsatzgebiete

  • 01Wiederherstellung von Daten nach einem Systemabsturz
  • 02Rollback von Transaktionen bei Fehlern

Vor- und Nachteile

Vorteile

  • Ermöglicht die Wiederherstellung der Datenkonsistenz
  • Unterstützt MVCC für gleichzeitige Transaktionen

Nachteile

  • Kann zu Undo-Log-Bloat führen bei langen Transaktionen
  • Erfordert zusätzlichen Speicherplatz

Praxisbeispiel

Ein Beispiel für die Verwendung des Undo Logs ist, wenn eine Transaktion fehlschlägt und alle Änderungen, die sie vorgenommen hat, durch den Undo Log rückgängig gemacht werden, um die Datenbank in einen konsistenten Zustand zurückzuführen.

Voraussetzungen & Tools

Das solltest du mitbringen

  • Grundkenntnisse in Datenbankmanagement
  • Verständnis von Transaktionen und ACID-Prinzipien

Typische Tools

MY
MySQLDatenbankmanagementsystem, das Undo Logs nutzt
MA
MariaDBFork von MySQL mit ähnlicher Implementierung

Häufige Fehler & Best Practices

Vermeiden

  • Missverständnis über die Funktionsweise von Undo Logs
  • Unterschätzung des Speicherbedarfs für Undo Logs

Besser so

  • Regelmäßige Überwachung der Undo-Log-Größe
  • Optimierung von Transaktionen zur Vermeidung von Bloat

Vergleich mit ähnlichen Technologien

PostgreSQL
PostgreSQL speichert alte Versionen direkt in den Datenblättern und verwendet keine separaten Undo-Logs.

Lernpfad & Zertifizierungen

  1. 1
    Verstehen der Undo-Log-Funktionalität

    Erlernen, wie Undo Logs in InnoDB funktionieren und welche Rolle sie bei der Datenkonsistenz und Transaktionsverwaltung spielen.

  2. 2
    Implementierung von MVCC

    Studieren der Multi-Version Concurrency Control und deren Implementierung durch Undo Logs in MySQL.

  3. 3
    Optimierung der Datenbankleistung

    Erforschen von Techniken zur Vermeidung von Undo-Log-Bloat und zur effizienten Nutzung von Undo Tablespaces.

MySQL Database AdministratorOracle
Database Management EssentialsCoursera

Live aus 7.804 Stellen

Undo Log am Arbeitsmarkt

Die Nachfrage nach Fachkräften mit Kenntnissen in Datenbankmanagement und speziell in MySQL und InnoDB ist in Deutschland hoch. Unternehmen suchen nach Experten, die komplexe Datenbankarchitekturen verwalten und optimieren können, insbesondere in Zeiten von Big Data und Cloud-Computing.

Gehaltsbereich laut Lexikon-Eintrag (Einschätzung)

50.000 – 80.000 € / Jahr

Die Gehälter variieren je nach Erfahrung und Region.

Typische Berufe

Offene Stellen im Bereich Datenbanken & Data Engineering

Senior Data Engineer (m/w/d) IT Data ManagementJobriver IT Jobbörse · Konstanz
Systemadministrator mit Schwerpunkt Datenbanken - Microsoft SQL Server & MySQL (m/w/d)Jobriver IT Jobbörse · Trier 34.000 € - 50.000 €
(Senior) Data Engineer (m/w/d) - Cloud AnalyticsJobriver IT Jobbörse · Trier 45.000 € - 65.000 €
Data Engineer (m/w/d)Jobriver IT Jobbörse · Regensburg 58.000 € - 78.000 €
Alle 243 Stellen ansehen

Häufige Fragen zu Undo Log

Was ist ein Undo Log?

Ein Undo Log ist eine zentrale Komponente der InnoDB-Storage-Engine in MySQL und MariaDB, die den vorherigen Zustand von Daten speichert, bevor eine Transaktion diese ändert. Dies ermöglicht Rollbacks und die Implementierung von Multi-Version Concurrency Control (MVCC), was die gleichzeitige Bearbeitung von Transaktionen ohne Konflikte unterstützt. Der Undo Log ist entscheidend für die Gewährleistung der Datenintegrität und Konsistenz.

Wie funktioniert der Undo Log?

Der Undo Log funktioniert, indem er für jede Transaktion den vorherigen Zustand der betroffenen Daten aufzeichnet. Wenn eine Transaktion fehlschlägt oder zurückgesetzt wird, ermöglicht der Undo Log das Zurücksetzen der Daten auf ihren ursprünglichen Zustand. Dies geschieht durch das logische Protokollieren der Änderungen, sodass die Daten unabhängig von physischen Speicheränderungen konsistent bleiben.

Wofür wird der Undo Log verwendet?

Der Undo Log wird verwendet, um die Datenkonsistenz in Datenbanksystemen zu gewährleisten, insbesondere bei Transaktionen. Er ermöglicht Rollbacks nicht abgeschlossener Transaktionen und unterstützt die Wiederherstellung der Daten nach einem Systemabsturz. Darüber hinaus ist er wichtig für die Implementierung von MVCC, das gleichzeitige Lese- und Schreiboperationen ohne Blockierungen unterstützt.

Was ist der Unterschied zwischen Undo Log und Redo Log?

Der Hauptunterschied zwischen Undo Log und Redo Log liegt in ihrer Funktionalität. Während der Undo Log verwendet wird, um nicht abgeschlossene Transaktionen zurückzusetzen und somit die Konsistenz der Daten zu gewährleisten, dient der Redo Log dazu, abgeschlossene Transaktionen nach einem Systemabsturz wiederherzustellen. Beide Logs sind essenziell für die Datenintegrität, arbeiten jedoch in unterschiedlichen Szenarien.

Welche Vorteile bietet der Einsatz von Undo Logs?

Der Einsatz von Undo Logs bietet mehrere Vorteile. Sie ermöglichen die Rückgängigmachung von Änderungen nicht abgeschlossener Transaktionen, was die Datenintegrität sichert. Außerdem unterstützen sie MVCC, was die gleichzeitige Bearbeitung von Transaktionen ohne Konflikte ermöglicht. Dies führt zu einer verbesserten Leistung und einer reibungsloseren Benutzererfahrung in Datenbankanwendungen.

Wie wird ein Undo Log organisiert?

Ein Undo Log ist intern organisiert und besteht aus verschiedenen Komponenten wie Undo Segments, Rollback Segments und Undo Tablespaces. Diese Struktur ermöglicht eine effiziente Verwaltung der Undo-Log-Einträge, wobei jeder Undo Tablespace maximal 128 Rollback-Segmente unterstützen kann. Diese Organisation hilft, die Leistung zu optimieren und die Verwaltung von Transaktionen zu erleichtern.

Was passiert, wenn eine Transaktion lange läuft?

Wenn eine Transaktion lange läuft, kann dies zu einem Phänomen namens Undo-Log-Bloat führen. Dies geschieht, wenn veraltete Undo-Log-Einträge nicht rechtzeitig aufgeräumt werden, was die History-Liste wachsen lässt. Lange laufende Transaktionen können somit die Effizienz des Datenbankmanagements beeinträchtigen und zu einer erhöhten Speichernutzung führen.

Wie unterstützt der Undo Log die ACID-Properties?

Der Undo Log spielt eine entscheidende Rolle bei der Unterstützung der ACID-Properties einer Datenbank. Durch die Gewährleistung der Atomicity ermöglicht er, dass Transaktionen entweder vollständig durchgeführt oder vollständig zurückgesetzt werden. Die Consistency wird durch das Zurücksetzen auf vorherige Zustände gewährleistet, während Isolation und Durability durch MVCC und die Protokollierung von Änderungen unterstützt werden.

Was sind Undo Tablespaces?

Undo Tablespaces sind spezielle Speicherbereiche innerhalb der InnoDB-Storage-Engine, die Undo Logs für Transaktionen speichern. Jeder Undo Tablespace kann bis zu 128 Rollback-Segmente enthalten, die für verschiedene Operationstypen wie INSERT, UPDATE und DELETE verwendet werden. Diese Struktur ermöglicht eine effiziente Verwaltung und Zugriff auf Undo-Log-Daten.

Wie erfolgt die Aufräumung von Undo Logs?

Die Aufräumung von Undo Logs erfolgt durch Purge-Threads, die veraltete Undo-Log-Einträge automatisch entfernen, sobald keine aktive Transaktion mehr auf sie zugreift. Dies ist wichtig, um die Speichernutzung zu optimieren und die Leistung der Datenbank aufrechtzuerhalten. Eine nicht rechtzeitige Aufräumung kann jedoch zu Undo-Log-Bloat führen.

Was ist der Unterschied zwischen Undo Logs in MySQL und PostgreSQL?

Der wesentliche Unterschied zwischen Undo Logs in MySQL und PostgreSQL liegt in der Art und Weise, wie alte Datenversionen behandelt werden. MySQL verwendet explizite Undo Logs zur Unterstützung von Rollbacks und Konsistenz, während PostgreSQL keine separaten Undo-Logs benötigt, da es alte Versionen direkt in den Datenblättern speichert. Dies führt zu unterschiedlichen Ansätzen in der Transaktionsverwaltung.

Was enthält ein Undo-Log-Record?

Ein Undo-Log-Record enthält spezifische Informationen, die es ermöglichen, die letzte Änderung einer Transaktion an einem clustered index record rückgängig zu machen. Diese Informationen sind entscheidend, wenn eine andere Transaktion den ursprünglichen Wert benötigt, um konsistente Daten für Leseoperationen bereitzustellen. Die genaue Struktur des Records ermöglicht eine effiziente Rückgängigmachung von Änderungen.

Wie viele Undo-Logs erhält eine Transaktion in MySQL 9.7?

In MySQL 9.7 erhält jede Transaktion bis zu vier Undo-Logs, die für verschiedene Operationstypen wie INSERT, UPDATE und DELETE verwendet werden. Diese Aufteilung ermöglicht eine differenzierte Handhabung der verschiedenen Transaktionsarten und verbessert die Effizienz der Datenbankoperationen.

Wie unterstützt der Undo Log das Isolationslevel READ COMMITTED?

Der Undo Log unterstützt das Isolationslevel READ COMMITTED, indem er konsistente Daten-Snapshots bereitstellt. Dies bedeutet, dass eine Transaktion nur die von ihr abgeschlossenen Änderungen sieht und nicht die Änderungen anderer, noch nicht abgeschlossener Transaktionen. Dadurch wird sichergestellt, dass Leseoperationen nicht durch gleichzeitige Schreiboperationen blockiert werden.

Was sind globale temporäre Tabellen und wie hängen sie mit Undo Logs zusammen?

Globale temporäre Tabellen sind spezielle Tabellen, die in MySQL verwendet werden und deren Undo Logs im globalen temporären Tablespace gespeichert werden. Diese Logs werden nicht redo-logged, da für temporäre Tabellen keine Crash-Recovery erforderlich ist. Dies verbessert die Leistung, da Redo-Logging-I/O vermieden wird, und ermöglicht eine effiziente Handhabung temporärer Daten.

Wie beeinflusst der Undo Log die Performance einer Datenbank?

Der Undo Log kann die Performance einer Datenbank erheblich beeinflussen. Durch die Unterstützung von Rollbacks und MVCC ermöglicht er eine gleichzeitige Bearbeitung von Transaktionen ohne Blockierungen, was die Effizienz steigert. Andererseits kann ein unzureichend verwalteter Undo Log, insbesondere bei langen Transaktionen, zu Undo-Log-Bloat führen, was die Performance negativ beeinflusst.

Quellen

  1. Undo - Runtime context for coding agents · undo.io
  2. An In-Depth Analysis of UNDO Logs in InnoDB - Alibaba Cloud · alibabacloud.com
  3. Was ist der Unterschied zwischen Undo-Log, Redo-Log ... - Reddit · reddit.com
  4. Understanding the Differences Between InnoDB Undo Log and ... · percona.com
  5. Recovery using Undo logging · cs.emory.edu
  6. What Is the InnoDB Undo Log in MySQL - OneUptime · oneuptime.com
  7. MySQL 9.7 Reference Manual :: 17.6.6 Undo Logs · dev.mysql.com
  8. InnoDB Undo Log | Server | MariaDB Documentation · mariadb.com
  9. Redo, Undo and WAL logs | The Backend Engineering Show · youtube.com
Hilfreich? Teile den Begriff: LinkedIn

Du kennst dich mit Undo Log aus?

Dann zeig es: Leg dir ein kostenloses Profil an und lass dich von passenden Stellen finden.