Rückgängigmachen der Anmeldung in MySQL

Rückgängigmachen der Anmeldung in MySQL

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:
  • 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)
  • Zusammenfassung der 7 Protokolltypen in MySQL
  • MySQL verwendet Binlog-Protokolle zur Implementierung der Datenwiederherstellung
  • Analyse und Lösung eines Fehlalarmproblems bei der langsamen MySQL-Protokollüberwachung
  • Die Rolle und Öffnung des MySQL-Protokolls für langsame Abfragen
  • Aktivieren und Konfigurieren des MySQL-Protokolls für langsame Abfragen
  • Detaillierte Erläuterung des Binlog-Protokollanalysetools zur Überwachung von MySQL: Canal
  • Analyse des MySQL-Warnprotokolls zu abgebrochenen Verbindungen
  • So verkleinern Sie die Protokolldatei in MYSQL SERVER
  • Zusammenfassung des MySQL Undo Log und Redo Log

<<:  Element Tabelle Tabellenkomponente Mehrfeld (Mehrspalten) Sortiermethode

>>:  Zusammenfassung der Fallstricke, die Ihnen bei der Entwicklung von WeChat-Applets möglicherweise noch nicht begegnet sind

Artikel empfehlen

react-beautiful-dnd implementiert die Drag-and-Drop-Funktion für Komponenten

Inhaltsverzeichnis 1. Installation 2.API 3. reagi...

Zusammenfassung gängiger Befehle für Ubuntu-Server

Die meisten der folgenden Befehle müssen in der K...

Vue implementiert den Anwesenheitskalender von DingTalk

In diesem Artikel wird der spezifische Code von V...

So erstellen Sie eine monatliche Tabelle in einer gespeicherten MySQL-Prozedur

Lassen Sie uns, ohne ins Detail zu gehen, direkt ...

JS implementiert ein zufälliges Namensaufrufsystem

Verwenden Sie JS, um ein zufälliges Namensaufrufs...

Detaillierte Erläuterung der Nginx-Anti-Hotlink- und Anti-Crawler-Konfiguration

Erstellen Sie eine neue Konfigurationsdatei (gehe...

CocosCreator Universal Framework Design Network

Inhaltsverzeichnis Vorwort WebSocket verwenden Er...

Fallstudie zu den SQL ROW_NUMBER()- und OVER()-Methoden

Syntaxformat: row_number() über (Partition durch ...

Techniken zur Optimierung von MySQL-Paging-Abfragen

In Anwendungen mit Paging-Abfragen sind Abfragen,...

Implementierung der HTML-Befehlszeilenschnittstelle

HTML-Teil Code kopieren Der Code lautet wie folgt:...

So stellen Sie ein SpringBoot-Projekt mit Docker bereit

Die Entwicklung der Docker-Technologie bietet ein...

Detaillierte Erklärung der Kernkonzepte und der grundlegenden Verwendung von Vuex

Inhaltsverzeichnis einführen Start Installieren ①...