Konzepteinführung: Wir wissen, dass das Redo-Log in MySQL das Verhalten von Transaktionen aufzeichnet. Wenn der Server abstürzt, können Daten durch das Wiederholen von Transaktionen wiederhergestellt werden. Manchmal müssen Transaktionen jedoch rückgängig gemacht werden, d. h. wir müssen wissen, wie eine Transaktion aussah, bevor sie zur aktuellen Situation wurde. In diesem Fall ist das Undo-Log praktisch. Mit anderen Worten, das Undo-Protokoll wird verwendet, um die Daten in den Zustand vor der Änderung wiederherzustellen. Daher müssen wir beim Ändern der Datenbank wissen, dass in diesem Prozess Redo-Protokolle und Undo-Protokolle generiert werden. Speicherort: Wir wissen auch, dass Redo-Protokolle im Allgemeinen in Redo-Protokolldateien abgelegt werden, die allgemein als ib_log bezeichnet werden, während Undo-Protokolle in einem „Segment“ innerhalb der Datenbank gespeichert werden. Wir haben im Artikel vom 21. August über dieses Konzept gesprochen. Wer es vergessen hat, kann zurückgehen und nachschauen. Das Undo-Protokollsegment befindet sich im gemeinsam genutzten Tablespace. Rollback-Vorgang: Wir kennen bereits das Konzept von Undo. Dabei handelt es sich eigentlich um einen Bereich im gemeinsam genutzten Tabellenbereich. Seine Hauptfunktion besteht darin, die Transaktion in den Zustand vor der Änderung wiederherzustellen. Die Wiederherstellungssituationen werden jedoch im Allgemeinen in zwei Typen unterteilt: logische Wiederherstellung und physische Wiederherstellung. Hier muss betont werden, dass die Undo-Wiederherstellung eine logische Wiederherstellung ist. Wenn Sie also 1 Million Daten einfügen, weist InnoDB eine neue Datenseite zum Speichern dieser Daten zu. Wenn die Transaktion dann zurückgesetzt wird, besteht die Funktion von Undo nicht darin, die Datenseite wiederzuverwenden, sondern diese Einfügevorgänge in Löschvorgänge umzuwandeln, um ein Rollback durchzuführen. Die Größe des gemeinsam genutzten Tablespaces ändert sich dabei nicht. Darüber hinaus wandelt das Undo-Protokoll Löschvorgänge in Einfügevorgänge und Aktualisierungsvorgänge in umgekehrte Aktualisierungsvorgänge um. Löschmethode: Ein weiterer zu beachtender Punkt ist, dass das Schreiben von Undo-Protokollen in den gemeinsam genutzten Transaktionstabellenbereich auch das Schreiben von Redo-Protokollen erfordert. Sobald eine Transaktion festgeschrieben ist, bedeutet dies, dass die Persistenz der Transaktion wirksam wird und das Undo-Protokoll nicht mehr benötigt wird. InnoDB löscht das Undo-Protokoll jedoch nicht direkt, sondern fügt es in eine verknüpfte Liste von Undo-Protokollen ein. Wann es gelöscht wird, hängt vom MySQL-Bereinigungsthread ab. Dies wird getan, um zu vermeiden, dass andere Transaktionen das Undo-Protokoll verwenden müssen, um die vorherige Version dieses Datensatzes abzurufen. Raumaufteilung: Im tatsächlichen Betrieb kann eine Datenbankinstanz viele Transaktionen ausführen. Wenn wir für jede Transaktion eine separate Protokolldatenseite zum Speichern der Rückgängigmachung zuweisen, wird Speicherplatz verschwendet. Lassen Sie uns eine einfache Berechnung durchführen. Angenommen, die TPS einer Anwendung beträgt 1000, dann wird für jede Transaktion eine Rückgängig-Seite zugewiesen. Die Größe einer Datenseite beträgt 16 KB und in 1 Minute werden 60 x 1000 Datenseiten generiert. Der für eine Minute erforderliche Speicherplatz beträgt dann etwa 960 MB Festplattenspeicher, was offensichtlich unangemessen ist. Daher können in InnoDB Rückgängig-Seiten wiederverwendet werden. Die spezifische Methode besteht darin, dass beim Festschreiben der Transaktion die Rückgängig-Seite in die verknüpfte Liste eingefügt und dann ermittelt wird, ob der von der Rückgängig-Seite verwendete Speicherplatz weniger als 75 % beträgt. Wenn dies der Fall ist, kann die Rückgängig-Seite wiederverwendet und das nachfolgende Rückgängig-Protokoll an das aktuelle Rückgängig-Protokoll angehängt werden. Natürlich können wir „show engine innodb status“ verwenden, um die Anzahl der Undo-Protokolle in der verknüpften Liste anzuzeigen, aber wir werden das hier nicht demonstrieren. Oben ist der detaillierte Inhalt des Undo-Protokolls in MySQL. Weitere Informationen zum MySQL-Undo-Protokoll finden Sie in den anderen verwandten Artikeln auf 123WORDPRESS.COM! Das könnte Sie auch interessieren:
|
<<: Element Tabelle Tabellenkomponente Mehrfeld (Mehrspalten) Sortiermethode
Inhaltsverzeichnis 1. Subroutensyntax 2. Beispiel...
Wenn ein Unternehmen seine Benutzerbasis vergröße...
1. Verwenden Sie den folgenden Befehl, um das SSH...
Inhaltsverzeichnis 1. Problembeschreibung 2. Prob...
In diesem Artikelbeispiel wird der spezifische JS...
Inhaltsverzeichnis Vorwort Die Notwendigkeit von ...
Allerdings ist die Häufigkeit des Shell-Starts se...
So implementieren Sie die Paging-Funktion des MyB...
Canal ist ein Open-Source-Projekt von Alibaba, da...
JavaScript-Umschalteffekt für Bekleidungsalben (ä...
Nginx entscheidet zunächst, welcher Serverblock i...
1. Grundlegende Spezifikationen (1) Es muss die I...
HTML-Wiederverwendung ist ein Begriff, der selten ...
1. Ursache Die Anforderung besteht darin, zwei Ze...
Zusammenfassend: 1. Berücksichtigen Sie die Leist...