Zusammenfassung des MySQL Undo Log und Redo Log

Zusammenfassung des MySQL Undo Log und Redo Log

Undo-Protokoll

Vor Beginn einer Datenbanktransaktion werden die zu ändernden Datensätze im Undo-Protokoll gespeichert. Wenn die Transaktion zurückgesetzt wird oder die Datenbank abstürzt, können mit dem Undo-Protokoll die Auswirkungen der nicht festgeschriebenen Transaktion auf die Datenbank rückgängig gemacht werden.

Erstellung und Vernichtung von Undo-Logs

Das Undo-Log wird vor dem Start der Transaktion generiert. Wenn die Transaktion festgeschrieben wird, wird das Undo-Log nicht sofort gelöscht. InnoDB fügt das der Transaktion entsprechende Undo-Log in die Löschliste ein, die dann vom Hintergrund-Bereinigungsthread wiederverwendet wird.
Undo Log ist ein logisches Protokoll, das einen Änderungsprozess aufzeichnet. Wenn beispielsweise ein Löschvorgang ausgeführt wird, zeichnet Undolog einen Einfügevorgang auf; wenn eine Aktualisierung ausgeführt wird, zeichnet Undolog die entgegengesetzte Aktualisierung auf.

Undo-Log-Speicherung

Das Undo-Protokoll wird in Segmenten verwaltet und aufgezeichnet. Die InnoDB-Datendatei enthält ein Rollback-Segment, das 1024 Undo-Log-Segmente enthält. Die Speicherung des Undo-Protokolls kann durch den folgenden Parametersatz gesteuert werden.

Variablen wie „%innodb_undo%“ anzeigen;

Undo-Log-Funktion

Implementieren der Transaktionsatomarität

Undo Log ist ein Produkt, das entwickelt wurde, um die Atomizität von Transaktionen zu erreichen. Wenn während der Transaktionsverarbeitung ein Fehler auftritt oder der Benutzer eine ROLLBACK-Anweisung ausführt, kann MySQL die Sicherung im Undo-Protokoll verwenden, um die Daten in den Zustand vor Beginn der Transaktion wiederherzustellen.

Implementierung von Multi-Version Concurrency Control (MVCC)

Undo Log wird verwendet, um die Parallelitätskontrolle mehrerer Versionen in der MySQL InnoDB-Speicher-Engine zu implementieren. Bevor eine Transaktion festgeschrieben wird, speichert das Undo-Protokoll die vorherige Version der Daten. Die Daten im Undo-Protokoll können als Snapshot der alten Version der Daten verwendet werden, um sie von anderen gleichzeitigen Transaktionen lesen zu können.

Transaktion A startet manuell eine Transaktion und führt einen Aktualisierungsvorgang aus. Zunächst werden die von der Aktualisierung betroffenen Daten im Undo-Puffer gesichert.
Transaktion B öffnet manuell eine Transaktion und führt eine Abfrageoperation aus. Sie liest die Undo-Protokolldaten und gibt sie zum Lesen des Snapshots zurück.

Redo-Protokoll

Bezieht sich auf alle Daten, die in einer Transaktion geändert wurden. Der Speicherort der letzten Datensicherung (Redo-Log) wird als Redo-Log bezeichnet.

Generierung und Freigabe von Redo-Logs

Während der Ausführung von Transaktionsvorgängen werden Redo-Protokolle generiert. Wenn die Transaktion festgeschrieben wird, werden die generierten Redo-Protokolle in den Protokollpuffer geschrieben, jedoch nicht sofort in die Datenträgerdatei, wenn die Transaktion festgeschrieben wird.
Nachdem die schmutzigen Seiten des Transaktionsvorgangs auf die Festplatte geschrieben wurden, ist die Mission des Redo-Protokolls abgeschlossen und der vom Redo-Protokoll belegte Speicherplatz kann wiederverwendet (überschrieben) werden.

So funktioniert Redo Log

Redo Log ist ein Produkt, das zur Erreichung der Transaktionspersistenz entwickelt wurde. Um zu verhindern, dass zum Zeitpunkt eines Fehlers fehlerhafte Seiten vorhanden sind, die nicht in die IBD-Datei der Tabelle geschrieben wurden, wiederholen Sie die Daten beim Neustart des MySQL-Dienstes basierend auf dem Redo-Protokoll. Dadurch wird die Funktion zum Beibehalten der Transaktionsdaten erreicht, die nicht auf die Festplatte geschrieben wurden.

Mechanismus zum Schreiben von Redo-Logs

Der Inhalt der Redo-Log-Datei wird in einer sequentiellen Schleife in die Datei geschrieben. Wenn diese voll ist, wird zur ersten Datei zurückgekehrt und diese überschrieben.

write pos ist die Position des aktuellen Datensatzes. Beim Schreiben bewegt es sich rückwärts. Nach dem Schreiben bis zum Ende der letzten Datei kehrt es zum Anfang der Datei 0 zurück.
Der Prüfpunkt ist die aktuelle zu löschende Position, die ebenfalls rückwärts und zyklisch verschoben wird. Vor dem Löschen des Datensatzes muss der Datensatz in der Datendatei aktualisiert werden.
Der leere Raum zwischen Schreibposition und Prüfpunkt kann zum Aufzeichnen neuer Vorgänge verwendet werden. Wenn die Schreibposition den Prüfpunkt einholt, bedeutet dies, dass sie voll ist. Zu diesem Zeitpunkt können keine neuen Aktualisierungen durchgeführt werden. Es ist notwendig, anzuhalten und einige Datensätze zu löschen, um den Prüfpunkt voranzutreiben.

Redo Log-bezogene Konfigurationsparameter

Jede InnoDB-Speicher-Engine verfügt über mindestens eine Redo-Log-Dateigruppe und jede Dateigruppe verfügt über mindestens zwei Redo-Log-Dateien. Die Standarddateien sind ib_logfile0 und ib_logfile1. Sie können die Redo-Log-Speicherung über die folgenden Parameter steuern

Variablen wie „%innodb_log%“ anzeigen;

Die Strategie zum Speichern des Redo-Puffers im Redo-Log kann über Innodb_flush_log_at_trx_commit festgelegt werden.

0: Der Redo-Puffer wird jede Sekunde festgeschrieben -> OS-Cache -> Cache auf die Festplatte leeren, was innerhalb einer Sekunde zum Verlust von Transaktionsdaten führen kann. Der Vorgang wird alle 1 Sekunde vom Master-Thread im Hintergrund ausgeführt.
1 (Standard): Redo-Puffer -> OS-Cache -> Cache auf Festplatte leeren wird bei jedem Transaktionscommit ausgeführt. Dies ist die sicherste Methode mit der schlechtesten Leistung.
2: Bei jedem Festschreiben einer Transaktion wird „Redo Buffer -> OS-Cache“ ausgeführt. Anschließend führt der Master-Thread im Hintergrund alle 1 Sekunde „OS-Cache -> Cache auf Festplatte leeren“ aus.

Es wird im Allgemeinen empfohlen, den Wert 2 auszuwählen, da bei einem MySQL-Absturz keine Daten verloren gehen und nur bei einem Absturz des gesamten Servers 1 Sekunde an Transaktionsdaten verloren geht.

Oben finden Sie eine detaillierte Zusammenfassung des MySQL Undo Log und Redo Log. Weitere Informationen zum MySQL Undo Log und Redo Log finden Sie in den anderen verwandten Artikeln auf 123WORDPRESS.COM!

Das könnte Sie auch interessieren:
  • Verstehen Sie den Unterschied zwischen Redo-Log und Binlog in MySQL in einem Artikel
  • Der Unterschied zwischen Redo-Log und Binlog in MySQL
  • Eine kurze Analyse der Unterschiede zwischen Undo, Redo und Binlog in MySQL
  • Analyse der MySQL-Absturzwiederherstellung basierend auf Redo Log und Undo Log
  • Detaillierte Erläuterung des Redo-Logs und Undo-Logs in MySQL
  • Detaillierte Analyse des MySQL 8.0-Redo-Logs
  • MySQL-Reihe: Redo-Log, Undo-Log und Binlog – ausführliche Erklärung
  • Detaillierte Erläuterung des MySQL-Redo-Logs (Redo-Log) und des Rollback-Logs (Undo-Log)
  • Vertieftes Verständnis des MySQL-Redo-Logs

<<:  DOCTYPE Dokumenttypdeklaration (unbedingt lesenswert für Webseiten-Liebhaber)

>>:  Docker verwendet Root, um in den Container zu gelangen

Artikel empfehlen

Docker-Compose erstellt schnell Schritte für ein privates Docker-Warehouse

Erstellen Sie docker-compose.yml und füllen Sie d...

Attribute und Verwendung von INS- und DEL-Tags

ins und del wurden in HTML 4.0 eingeführt, um Auto...

Erfahrungsaustausch zur MySQL-Slave-Wartung

Vorwort: Die MySQL-Master-Slave-Architektur dürft...

Detaillierte Erläuterung des mobilen Projekts vite2.0 + vue3

1. Technische Punkte Vite-Version vue3 ts Integri...

Beispielverwendung des Linux-Komprimierungsdateibefehls „zip“

Das „.zip“-Format wird zum Komprimieren von Datei...

Einrichten der React-Native-Umgebung und grundlegende Einführung

Umgebungsvorbereitung 1. Umweltkonstruktion React...

CSS Flex mehrere mehrspaltige Layouts

Grundlegendes dreispaltiges Layout .Container{ An...

Detaillierte Erläuterung der praktischen Anwendung des HTML-Tabellenlayouts

Wann wird die Tabelle eingesetzt? Tabellen werden...

Detaillierte Erklärung, wie Sie den Speicherverbrauch in MySql reduzieren können

Vorwort Standardmäßig initialisiert MySQL einen g...

Zusammenfassung der MySQL-Verbundindizes

Inhaltsverzeichnis 1. Hintergrund 2. Zusammengese...

Docker installiert Elasticsearch7.6-Cluster und legt Passwort fest

Ab Elasticsearch 6.8 dürfen kostenlose Benutzer d...