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

VMware virtuelle Maschine installieren CentOS 8 (1905) System-Tutorial-Diagramm

Die weltberühmte virtuelle Maschinensoftware VMwa...

Mehrere Lösungen für die Ausrichtung von CSS-Datensatztextsymbolen

Während der Entwicklung kommt es sehr häufig vor,...

So implementieren Sie eine bidirektionale Bindungsfunktion in vue.js mit reinem JS

Inhaltsverzeichnis Lassen Sie uns zunächst über d...

Vue-Anfängerhandbuch: Erstellen des ersten Vue-cli-Scaffolding-Programms

1. Vue – Das erste Vue-CLI-Programm Die Entwicklu...

Lösung für den Fall, dass der Tomcat-Server tomcat7w.exe nicht öffnen kann

Beim Konfigurieren des Tomcat-Servers ist mir heu...

So zeichnen Sie eine Mindmap in einem Miniprogramm

Inhaltsverzeichnis Was ist eine Mindmap? Wie zeic...

Drei Implementierungsmethoden für die MySQL-Kopiertabelle und die Grant-Analyse

So kopieren Sie schnell eine Tabelle Erstellen Si...

So fügen Sie eine Schnittstellen-Abhörmaske in ein Vue-Projekt ein

1. Geschäftshintergrund Die Verwendung einer Mask...

So nummerieren Sie die Ergebnisse von MySQL-Abfragedaten automatisch

Vorwort Tatsächlich bin ich noch nie auf eine Sit...

Setzen Sie den Eingang auf schreibgeschützt über deaktiviert und schreibgeschützt

Es gibt zwei Möglichkeiten, schreibgeschützte Eing...

Detaillierte Erklärung des Lebenszyklus von Angular-Komponenten (Teil 2)

Inhaltsverzeichnis 1. Haken anzeigen 1. Was bei d...

Nginx verwendet Lua+Redis, um IP dynamisch zu blockieren

1. Hintergrund Bei unserer täglichen Website-Wart...