Heim  >  Artikel  >  Datenbank  >  Was sind MySQL Redo- und Undo-Logs?

Was sind MySQL Redo- und Undo-Logs?

WBOY
WBOYnach vorne
2023-05-30 16:07:311864Durchsuche

    1. Einführung in das Redo-Protokoll

    Das Redo-Protokoll ist ein physisches Protokoll, das Seitenänderungen aufzeichnet.

    1.1 Die Rolle des Redo-Protokolls

    • Verbesserung der Effizienz beim Schreiben von Datenbanken

    • Stellen Sie sicher, dass die Datenbank keine Daten verliert und führen Sie eine Datenwiederherstellung durch

    1.2 Das Format und der Typ des Redo-Protokolls

    Das sogenannte Mit der REDO-Organisationsmethode wird der erforderliche REDO-Inhalt in einer Festplattendatei aufgezeichnet, um ein effizientes Schreiben, Lesen, Wiederherstellen und Bereinigen von REDO zu ermöglichen. Wir unterteilen REDO von oben nach unten in drei Schichten: logische REDO-Schicht, physische REDO-Schicht und Dateischicht.

    • Logische REDO-Schicht

    Diese Schicht ist der eigentliche REDO-Inhalt, ein sequentieller Datenfluss besteht aus mehreren REDO-Datensätzen unterschiedlicher Art, die am Ende mit einem global eindeutigen inkrementellen Offset sn verwaltet werden Maximalwert von sn im globalen log_sys und erhöht sn jedes Mal um die REDO-Inhaltslänge, wenn Daten geschrieben werden.

    • Physische REDO-Schicht

    Disk ist ein Blockgerät, um Daten zu lesen und zu schreiben. Die Länge eines Blocks entspricht der Größe des Festplattensektors Jeder IO-Lese- und Schreibvorgang ist ein Block.

    • Dateischicht

    Schließlich wird REDO in die REDO-Protokolldatei geschrieben, und die Protokolldatei wird in einer Schleife geschrieben

    Was sind MySQL Redo- und Undo-Logs?

    2. Der Prozess des Schreibens von Redo-Protokollen (MTR)

    • Die Operationen des Benutzerthreads werden zunächst in den Protokollpuffer geschrieben. log buffer

    • log buffer

    • Protokollpuffer Nacheinander in das logische Redo-Protokoll geschrieben

    • und später auf die Festplatte geschrieben

    wird der Benutzer benachrichtigt, dass die Speicherung abgeschlossen ist

    3

    Checkpoint ist das Markierungsbit schmutziger Seiten im Redo-Protokoll, das die folgenden zwei Funktionen hat:
    • Redo-Protokolle verwalten, um die Reinigung zu erleichtern
    • Reduzieren Sie den Arbeitsaufwand beim Neustart.

    Was sind MySQL Redo- und Undo-Logs?

    Datenbankwiederherstellungsprozess:

    • Checkpoint-Informationen lesen •Lesen Sie die verbleibenden Protokolle ab der Checkpoint-Position

    • Parsen Sie das Protokoll und erstellen Sie eine Hash-Tabelle gemäß space_no und page_id

    • Redo-Protokoll anwenden, Redo-Protokoll Die Wiedergabe sorgt für Idempotenz Rückgängig-Protokoll

    • Das Rückgängig-Protokoll ist ein logisches Protokoll, das die inkrementellen Datenänderungen aufzeichnet. Seine Funktion besteht darin, die Atomizität von Transaktionen und die Kontrolle der Parallelität von Transaktionen sicherzustellen. Umgeschrieben: Das Undo-Protokoll dient dazu, die Atomizität von Transaktionen zu gewährleisten und ihre Parallelität zu kontrollieren, indem es die inkrementellen Änderungen in den Daten protokolliert und als logisches Protokoll fungiert. Es kann verwendet werden, um Transaktionen rückgängig zu machen, die Multiversionskontrolle (MVCC) zu implementieren und Lese-/Schreibkonflikte sowie konsistente Lesevorgänge zu lösen.
    • 5. MVCC

    • Die Bedeutung von MVCC:

    • Lesen und Schreiben blockieren sich nicht gegenseitig;

    Reduzieren Sie die Wahrscheinlichkeit eines Deadlocks;

    Die Rolle von UndoLog in MVCC:

      Jede Transaktion hat eine einstufige Transaktions-ID;
    • Der Zeilendatensatz der Datenseite enthält DB_ROW_ID, DB_TRX_ID, DB_ROLL_PTR;
    • DB_ROLL_PTR Alle Snapshot-Datensätze der Datenzeilen werden über eine verknüpfte Listenstruktur verkettet.

    Das obige ist der detaillierte Inhalt vonWas sind MySQL Redo- und Undo-Logs?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

    Stellungnahme:
    Dieser Artikel ist reproduziert unter:yisu.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen