Das Konzept von MTR in MySQL

Das Konzept von MTR in MySQL

MTR steht für Mini-Transaktion. Wie der Name schon sagt, kann man darunter „kleinste Transaktion“ verstehen. In MySQL wird der Vorgang eines atomaren Zugriffs auf die zugrundeliegende Seite als Mini-Transaktion bezeichnet. Die atomare Operation bedeutet hier, dass entweder alle erfolgreich sind oder alle fehlschlagen und es keinen Zwischenzustand gibt.

MTR wird hauptsächlich zum Schreiben von Undo- und Redo-Protokollen verwendet. Wenn wir beispielsweise einen Datensatz in einen B+-Baumindex einfügen möchten, ist die Einfügung entweder erfolgreich oder schlägt fehl. Dieser Vorgang kann als MTR-Vorgang bezeichnet werden. Während dieses Vorgangs wird eine Reihe von Redo-Protokollen generiert. Dieser Protokollsatz ist bei der Wiederherstellung nach einem MySQL-Absturz ein unteilbares Ganzes.

Wenn wir eine Transaktion haben, die 3 Anweisungen enthält, sieht das konzeptionelle Diagramm von MTR wie folgt aus:

Mini-Transaktionen folgen im Allgemeinen drei Prinzipien:

  • 1. Die Fix-Regeln
  • 2. WAL
  • 3. Force-Log beim Commit

Hier erklären wir diese drei Prinzipien:

1. Die Fix-Regeln

Bevor wir die erste Regel erklären, müssen wir das Konzept des Latch in MySQL verstehen. In MySQL ist Latch eine leichte Sperre. Im Gegensatz zu Lock sperrt es nur für sehr kurze Zeit. In InnoDB kann Latch in Mutex (Mutex) und RWLock (Lese-/Schreibsperre) unterteilt werden. Sein Zweck besteht darin, die Richtigkeit gleichzeitiger Threads sicherzustellen, die kritische Ressourcen bedienen.

Nachdem wir nun das Latch-Konzept verstanden haben, schauen wir uns die Fix-Regel an:

Um eine Datenseite zu ändern, müssen Sie den X-Latch dieser Datenseite abrufen.

Für den Zugriff auf eine Seite ist der Erhalt eines S-Latch oder eines X-Latch erforderlich.

Die Verriegelung, die die Seite hält, wird erst freigegeben, wenn der Vorgang zum Ändern oder Zugreifen auf die Seite abgeschlossen ist.

2. WAL

Ich glaube, jeder ist mit der WAL-Technologie vertraut. Sie ist der grundlegende Grund, warum die Innodb-Speicher-Engine die Wiederherstellung nach einem Absturz unterstützt. Das heißt, bevor eine Datenseite persistent gespeichert wird, muss zuerst die entsprechende Protokollseite im Speicher persistent gespeichert werden.

3. Force-Log beim Commit

Dieses Prinzip ist sehr wichtig. Es bedeutet, dass beim Festschreiben einer Transaktion alle von ihr generierten MTR-Protokolle auf das Persistenzgerät übertragen werden müssen, um die Absturzwiederherstellungslogik sicherzustellen.

Der Grund für die Einführung von MTR ist die Vorbereitung auf die spätere Einführung der Redo-Log-Optimierung in MySQL 8.0. In MySQL 5.7 stellt MTR die Atomizität von Vorgängen innerhalb von Transaktionen sicher. Wenn der Benutzer eine Operation ausführt, wird die Datenseite aktualisiert und gleichzeitig das Redo-Log geschrieben. mtr ist der Träger des Redo-Logs und existiert in der privaten Variable jeder Verbindungssitzung. Wenn mtr übermittelt wird, wird das lokale Redo-Protokoll in den globalen log_buffer kopiert. Um die Ordnung des Redo-Protokolls sicherzustellen, ist für den Zugriff auf den log_buffer eine Sperre erforderlich. Diese Sperre ist das oben erwähnte Mutex. Unter dem Schutz dieser Sperre muss zusätzlich zum Kopieren des lokalen Protokolls in den globalen Puffer die Datenseite zur Flush_list hinzugefügt werden, damit der Hintergrundthread den Datenfluss durchführen und den Datenbankprüfpunkt dabei unterstützen kann, weiter fortzufahren. Daher ist diese Sperre in alten MySQL-Versionen sehr wettbewerbsfähig. MySQL 8.0 hat dieses Problem optimiert, was in den folgenden Artikeln detailliert analysiert wird.

Oben finden Sie ausführliche Informationen zum Konzept von MTR in MySQL. Weitere Informationen zu MySQL MTR finden Sie in den anderen verwandten Artikeln auf 123WORDPRESS.COM!

Das könnte Sie auch interessieren:
  • MySQL-Installationsdiagramm. Grafisches MySQL-Installationstutorial (detaillierte Anweisungen).
  • MySQL-Benutzererstellung und Autorisierungsmethode
  • MySQL-Tipps: Lösung für das Problem, dass der Server beendet wird, ohne die PID-Datei zu aktualisieren
  • Zusammenfassung der Verwendung des MySQL-Datumsdatentyps und des Zeittyps
  • MySQL - 4 Möglichkeiten zum Ändern des Root-Passworts (am Beispiel von Windows)
  • Detaillierte Erklärung der TIMESTAMP-Verwendung in MySQL
  • Beispiele für die Verwendung temporärer Tabellen in MySQL
  • Python-Brute-Force-Cracking von Mysql-Daten – Beispiel
  • Wie die MySQL Select-Anweisung ausgeführt wird
  • Der Unterschied zwischen zwei MySQL-Anweisungen zum Löschen von Benutzern (Benutzer löschen und Benutzer löschen)
  • Eine kurze Analyse der parallelen MySQL-Replikation

<<:  Vue+el-table realisiert das Zusammenführen von Zellen

>>:  Beispiel für die Bereitstellung von MySQL 8.0 mit Docker

Artikel empfehlen

Die perfekte Lösung für das MySql-Versionsproblem sql_mode=only_full_group_by

1. Überprüfen Sie sql_mode wählen Sie @@sql_mode ...

Beispiel für eine MySQL-DML-Sprachoperation

Zusätzliche Erklärung, Fremdschlüssel: Verwenden ...

Ausführliche Erklärung zu MySQL vom Einstieg bis zum Aufgeben - Installation

Was Sie lernen werden 1. Softwareinstallation und...

Grundkenntnisse in HTML: ein erstes Verständnis von Webseiten

HTML ist die Abkürzung für Hypertext Markup Langua...

Befehl zum Anzeigen der Erstellungszeit der Binlog-Datei unter Linux

Inhaltsverzeichnis Hintergrund analysieren Verfah...

Eine kurze Erläuterung zum eleganten Löschen großer Tabellen in MySQL

Inhaltsverzeichnis 1. Truncate-Operation 1.1 Welc...

Grundlegende Verwendung von UNION und UNION ALL in MySQL

In der Datenbank führen sowohl die Schlüsselwörte...

Dreißig HTML-Codierungsrichtlinien für Anfänger

1. HTML-Tags immer schließen Im Quellcode der vor...

Eine kurze Analyse des Zeitproblems von MySQL

Der Standardzeittyp (Datum/Uhrzeit und Zeitstempe...

JS verwendet Map, um doppelte Arrays zu integrieren

Inhaltsverzeichnis Vorwort Daten simulieren Zusam...

Elemente der Benutzererfahrung oder Elemente des Webdesigns

System- und Benutzerumgebungsdesign <br />D...

Detaillierte Erklärung der Methoden des fs-Moduls und des Path-Moduls in Node.js

Überblick: Das Dateisystemmodul ist ein einfacher...

HTML erstellt eine einfache und schöne Anmeldeseite

Schauen wir uns das zunächst einmal an. HTML Quel...