Inhaltsverzeichnis
1. Pufferpool
2. Protokolldatei rückgängig machen
3. Pufferpooldaten aktualisieren
4. Redo-Log-Puffer
5. Wird es Auswirkungen haben, wenn die Transaktion nicht übermittelt wird?
6. Transaktion einreichen, Redo-Log-Konfigurationsstrategie
7. Die endgültige Übermittlung der Transaktion, binlog
Nachdem wir die Analyse über die Update-Anweisung ausgeführt haben, haben wir erfahren, dass die InnoDB-Speicher-Engine Pufferpool-Pufferpools, Redo-Log-Pufferpuffer und andere Cache-Daten, Undo-, Reod-Log- und andere Protokolldateien enthält sowie die MySQL-Server-Protokolldatei. Beim Ausführen der Update-Anweisung werden der Pufferpool, das Schreiben der Rückgängig-Protokolldatei, das Schreiben des Redo-Protokollpuffers und andere Vorgänge geändert. Wenn die Transaktion übermittelt wird, wird das Redo-Protokoll geleert, das Binlog wird geleert und die Binlog-Datei wird geleert Name und Speicherort werden geschrieben, Geben Sie die Festschreibungsmarkierung ein und warten Sie schließlich, bis der E / A-Thread die schmutzigen Daten zufällig im Pufferpool geleert hat.
Heim Datenbank MySQL-Tutorial Beherrschen Sie die MySQL-Prinzipien und das Architekturdesign der InnoDB-Speicher-Engine vollständig

Beherrschen Sie die MySQL-Prinzipien und das Architekturdesign der InnoDB-Speicher-Engine vollständig

Jan 19, 2022 pm 06:03 PM
mysql

Dieser Artikel vermittelt Ihnen relevantes Wissen über das Design der InnoDB-Speicher-Engine-Architektur im MySQL-Prinzip. Ich hoffe, dass er Ihnen hilfreich sein wird.

Beherrschen Sie die MySQL-Prinzipien und das Architekturdesign der InnoDB-Speicher-Engine vollständig

InnoDB-Komponentenstruktur:

  1. Pufferpool: Pufferpool, Festplattendaten zwischenspeichern

  2. Redo-Log-Puffer: Vorgänge im Pufferpool aufzeichnen, gemäß Richtlinie auf die Festplatte schreiben, um Ausfallzeiten zu vermeiden, aber die Transaktion hat Datenverlust begangen

  3. Rückgängig-Protokoll: Wenn die Daten im Pufferpool geändert werden, kann vor der Übermittlung der Transaktion ein Rollback durchgeführt werden. Der alte Wert wird in die Rückgängig-Protokolldatei geschrieben, um das Rollback zu erleichtern. Die Daten im Pufferpool sind inkonsistent mit der Festplatte.

1. Pufferpool

Angenommen, es gibt eine Aktualisierungsanweisung:

update users set name = 'lisi' where id = 1
Nach dem Login kopieren

muss in der Datenbank aktualisiert werden. Welche Vorgänge führt InnoDB aus?

Beherrschen Sie die MySQL-Prinzipien und das Architekturdesign der InnoDB-Speicher-Engine vollständig

Zuerst prüft InnoDB, ob die Daten mit der ID = 1 im Pufferpool vorhanden sind. Wenn sie nicht vorhanden sind, werden sie von der Festplatte in den Pufferpool geladen und fügen außerdem eine exklusive Sperre hinzu Ändern Sie auch diese Datenzeile, um mehrere SQLs zu verhindern.

Beherrschen Sie die MySQL-Prinzipien und das Architekturdesign der InnoDB-Speicher-Engine vollständig

2. Protokolldatei rückgängig machen

Angenommen, der ursprüngliche Wert dieses Datennamens ist name = 'zhangsan', dann brauchen wir Um den alten Wert in name ='zhangsan' und id=1 zu ändern, werden diese in die Rückgängig-Protokolldatei geschrieben.

Für Schüler, die mit Datenbanken vertraut sind, verstehen sie alle das Konzept von Transaktionen. Vor der Übermittlung der Transaktion können alle Vorgänge zurückgesetzt werden, dh name = 'lisi' kann auf name = 'zhangsan' zurückgesetzt werden. Es wird also aktualisiert. Der vorherige Wert wird in die Rückgängig-Protokolldatei geschrieben.

Beherrschen Sie die MySQL-Prinzipien und das Architekturdesign der InnoDB-Speicher-Engine vollständig

3. Pufferpooldaten aktualisieren

Nachdem die Rückgängig-Protokolldatei geschrieben wurde, beginnen Sie mit der Aktualisierung dieser Daten im Speicher. Aktualisieren Sie name = 'zhangsan' mit id = 1 auf name = 'lisi'. Zu diesem Zeitpunkt wurden die Daten im Speicher aktualisiert, aber die Daten auf der Festplatte haben sich nicht geändert. Zu diesem Zeitpunkt werden inkonsistente fehlerhafte Daten angezeigt.

Beherrschen Sie die MySQL-Prinzipien und das Architekturdesign der InnoDB-Speicher-Engine vollständig

Zu diesem Zeitpunkt haben Sie möglicherweise eine Frage: Wenn die Transaktion übermittelt wird, der MySQL-Dienst jedoch ausgefallen ist und die Daten im Speicher nicht auf die Festplatte geschrieben wurden, führt dies zu Datenverlust und Inkonsistenz in den SQL-Ausführungsdaten?

4. Redo-Log-Puffer

In der InnoDB-Struktur gibt es einen Redo-Log-Puffer zum Speichern von Redo-Logs. Ändern Sie beispielsweise id=1, name='zhangsan' in name= 'lisi' Es ist ein Protokoll.

Beherrschen Sie die MySQL-Prinzipien und das Architekturdesign der InnoDB-Speicher-Engine vollständig

Aber zu diesem Zeitpunkt ist der Redo-Log-Puffer immer noch nur im Speicher vorhanden und eine Datenwiederherstellung nach einem MySQL-Ausfall ist nicht möglich.

5. Wird es Auswirkungen haben, wenn die Transaktion nicht übermittelt wird?

Tatsächlich hat es keine Auswirkungen auf die Transaktion, was bedeutet, dass die Ausführung nicht erfolgreich ist. Selbst wenn MySQL abstürzt oder ausfällt, bleiben die geänderten Daten im Pufferpool und im Redo-Log-Puffer erhalten verloren, und die Konsistenz der Daten wird dadurch nicht beeinträchtigt. Wenn die Transaktionsfestschreibung fehlschlägt, werden die Daten in der Datenbank nicht geändert.

Beherrschen Sie die MySQL-Prinzipien und das Architekturdesign der InnoDB-Speicher-Engine vollständig

6. Transaktion einreichen, Redo-Log-Konfigurationsstrategie

Beim Absenden der Transaktion schreibt das Redo-Tagebuch das Redo-Log entsprechend der Strategie aus dem Redo-Log-Puffer auf die Festplatte. Die Richtlinie wird über innoDB_flush_log_at_trx_commit konfiguriert.

  1. Der Parameter von innoDB_flush_log_at_trx_commit ist 0. Auch nach dem Festschreiben der Transaktion wird das Redo-Protokoll nicht auf die Festplatte geschrieben. Nach einem MySQL-Absturz gehen die Daten im Speicher verloren.

Beherrschen Sie die MySQL-Prinzipien und das Architekturdesign der InnoDB-Speicher-Engine vollständig

  1. Der Parameter von innoDB_flush_log_at_trx_commit ist 1. Nach der Übermittlung der Transaktion wird das Redo-Protokoll aus dem Speicher auf die Festplatte geleert. Solange die Transaktion erfolgreich übermittelt wird, ist das Redo-Protokoll definitiv vorhanden auf der Festplatte.

Beherrschen Sie die MySQL-Prinzipien und das Architekturdesign der InnoDB-Speicher-Engine vollständig

Auch wenn die Pufferpooldaten zu diesem Zeitpunkt nicht auf die Festplatte geleert werden, können Sie anhand des Redo-Protokolls erkennen, welche Daten geändert wurden. Nach dem Herunterfahren und Neustarten von MySQL können die geänderten Daten angezeigt werden aus dem Redo-Log wiederhergestellt werden.

Beherrschen Sie die MySQL-Prinzipien und das Architekturdesign der InnoDB-Speicher-Engine vollständig

  1. Der Parameter von innoDB_flush_log_at_trx_commit ist 2. Nach der Übermittlung der Transaktion verbleibt das Redo-Log nur im Betriebssystem-Cache und wurde nicht auf die Festplatte geleert, falls der Dienst zu diesem Zeitpunkt ausgefallen ist. Dann gehen auch die Daten im Betriebssystem-Cache verloren. Auch wenn die Transaktion erfolgreich übermittelt wird, gehen Daten verloren.

Beherrschen Sie die MySQL-Prinzipien und das Architekturdesign der InnoDB-Speicher-Engine vollständig

Nachdem ich diese gelesen habe, glaube ich, dass Parameter 1 die beste Strategie ist, um die Datensicherheit zu gewährleisten.

7. Die endgültige Übermittlung der Transaktion, binlog

binlog, ist eigentlich eine Protokolldatei, die zu MySQL Server gehört, und wird hier erwähnt, weil sie eng mit dem Redo-Protokoll zusammenhängt.

1) Der Unterschied zwischen Biglog und Redo-Log

  • Redo-Log: Es zeichnet ein Redo-Log mit teilweise physischer Natur auf, z. B. „Welcher Datensatz auf welcher Datenseite, welche Änderungen wurden vorgenommen“

  • Binlog: Ein Log, das logischer ist, wie zum Beispiel: „Die Datenzeile mit der ID=10 in der Benutzertabelle wurde aktualisiert. Wie lautet der Wert nach der Aktualisierung?“

2) Schreiben Sie das Binlog unter gleichzeitig beim Senden der Transaktion

Während der Ausführung von Aktualisierungen interagiert innoDB ständig mit dem Executor, einschließlich des Ladens von Daten in den Pufferpool, des Schreibens von Undo-Log-Dateien, des Aktualisierens von Speicherdaten, des Schreibens von Redo-Logs und des Leerens auf die Festplatte usw. Das Schreiben in Binlog wird ebenfalls vom Executor durchgeführt.

Beherrschen Sie die MySQL-Prinzipien und das Architekturdesign der InnoDB-Speicher-Engine vollständig

Die Schritte 1, 2, 3 und 4 sind das, was Sie tun, wenn Sie die Aktualisierungsanweisung ausführen, und die Schritte 5 und 6 sind das, was Sie tun, wenn Sie die Transaktion festschreiben.

3) Analyse der Binlog-Protokoll-Flushing-Strategie

sync_binlog-Parameter steuert die Binlog-Flushing-Strategie

  1. sync_ Der Standardwert von binlog ist 0. Nach dem Absenden der Transaktion wird das Binlog-Protokoll im Betriebssystem-Cache gespeichert verursacht Probleme, nachdem MySQL ausgefallen ist. Der Wert von „sync_binlog“ ist 1. Nach der Übermittlung der Transaktion wird das Binlog-Protokoll direkt auf die Festplatte geschrieben.

  2. 4) Vollständige Transaktionsübermittlung basierend auf Binlog und Redo-Log

  3. Nachdem das Binlog auf die Festplatte geschrieben wurde, werden der Speicherort und der Dateiname der Binlog-Protokolldatei gleichzeitig in die Redo-Log-Datei geschrieben Schreiben Sie in die Redo-Log-Datei eine Festschreibungsmarkierung.

5) Welche Bedeutung hat das Commit-Tag? Die

Beherrschen Sie die MySQL-Prinzipien und das Architekturdesign der InnoDB-Speicher-Engine vollständigcommit-Markierung bedeutet, dass das Redo-Log und die Binlog-Protokolle konsistent bleiben. Wenn die Transaktionsübermittlung in Schritt 5 oder Schritt 6 beginnt, MySQL ausgefallen ist und im Redo-Log keine Commit-Markierung vorhanden ist, gilt die Transaktionsübermittlung als fehlgeschlagen.

bedeutet, dass die Festschreibungsmarkierung bedeutet, dass die Transaktion schließlich erfolgreich übermittelt wurde.

8. Pufferpool Verschmutzte Daten werden auf die Festplatte geleert

Verschmutzte Daten werden zufällig vom Hintergrund-E/A-Thread auf die Festplatte geleert.

Zu diesem Zeitpunkt habe ich darüber nachgedacht, was ich tun soll, wenn MySQL ausfällt, bevor ich die Festplatte flashe? Zu diesem Zeitpunkt wurde die Transaktion erfolgreich übermittelt und es gibt eine Commit-Markierung im Redo-Log. Selbst wenn es nicht verfügbar ist, werden die Daten nach dem Neustart gemäß der Redo-Log-Datei im Speicher aktualisiert und warten auf die E/A Thread zum Spülen der Festplatte.

Beherrschen Sie die MySQL-Prinzipien und das Architekturdesign der InnoDB-Speicher-Engine vollständig

9. Zusammenfassung

Nachdem wir die Analyse über die Update-Anweisung ausgeführt haben, haben wir erfahren, dass die InnoDB-Speicher-Engine Pufferpool-Pufferpools, Redo-Log-Pufferpuffer und andere Cache-Daten, Undo-, Reod-Log- und andere Protokolldateien enthält sowie die MySQL-Server-Protokolldatei. Beim Ausführen der Update-Anweisung werden der Pufferpool, das Schreiben der Rückgängig-Protokolldatei, das Schreiben des Redo-Protokollpuffers und andere Vorgänge geändert. Wenn die Transaktion übermittelt wird, wird das Redo-Protokoll geleert, das Binlog wird geleert und die Binlog-Datei wird geleert Name und Speicherort werden geschrieben, Geben Sie die Festschreibungsmarkierung ein und warten Sie schließlich, bis der E / A-Thread die schmutzigen Daten zufällig im Pufferpool geleert hat.

Empfohlenes Lernen:

MySQL-Video-Tutorial

Das obige ist der detaillierte Inhalt vonBeherrschen Sie die MySQL-Prinzipien und das Architekturdesign der InnoDB-Speicher-Engine vollständig. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

Video Face Swap

Video Face Swap

Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Wie man phpmyadmin öffnet Wie man phpmyadmin öffnet Apr 10, 2025 pm 10:51 PM

Sie können PhpMyAdmin in den folgenden Schritten öffnen: 1. Melden Sie sich beim Website -Bedienfeld an; 2. Finden und klicken Sie auf das Symbol phpmyadmin. 3. Geben Sie MySQL -Anmeldeinformationen ein; 4. Klicken Sie auf "Login".

MySQL: Eine Einführung in die beliebteste Datenbank der Welt MySQL: Eine Einführung in die beliebteste Datenbank der Welt Apr 12, 2025 am 12:18 AM

MySQL ist ein Open Source Relational Database Management -System, das hauptsächlich zum schnellen und zuverlässigen Speicher und Abrufen von Daten verwendet wird. Sein Arbeitsprinzip umfasst Kundenanfragen, Abfragebedingungen, Ausführung von Abfragen und Rückgabergebnissen. Beispiele für die Nutzung sind das Erstellen von Tabellen, das Einsetzen und Abfragen von Daten sowie erweiterte Funktionen wie Join -Operationen. Häufige Fehler umfassen SQL -Syntax, Datentypen und Berechtigungen sowie Optimierungsvorschläge umfassen die Verwendung von Indizes, optimierte Abfragen und die Partitionierung von Tabellen.

So verwenden Sie ein einzelnes Gewinde -Redis So verwenden Sie ein einzelnes Gewinde -Redis Apr 10, 2025 pm 07:12 PM

Redis verwendet eine einzelne Gewindearchitektur, um hohe Leistung, Einfachheit und Konsistenz zu bieten. Es wird E/A-Multiplexing, Ereignisschleifen, nicht blockierende E/A und gemeinsame Speicher verwendet, um die Parallelität zu verbessern, jedoch mit Einschränkungen von Gleichzeitbeschränkungen, einem einzelnen Ausfallpunkt und ungeeigneter Schreib-intensiver Workloads.

Mysqls Platz: Datenbanken und Programmierung Mysqls Platz: Datenbanken und Programmierung Apr 13, 2025 am 12:18 AM

Die Position von MySQL in Datenbanken und Programmierung ist sehr wichtig. Es handelt sich um ein Open -Source -Verwaltungssystem für relationale Datenbankverwaltung, das in verschiedenen Anwendungsszenarien häufig verwendet wird. 1) MySQL bietet effiziente Datenspeicher-, Organisations- und Abruffunktionen und unterstützt Systeme für Web-, Mobil- und Unternehmensebene. 2) Es verwendet eine Client-Server-Architektur, unterstützt mehrere Speichermotoren und Indexoptimierung. 3) Zu den grundlegenden Verwendungen gehören das Erstellen von Tabellen und das Einfügen von Daten, und erweiterte Verwendungen beinhalten Multi-Table-Verknüpfungen und komplexe Abfragen. 4) Häufig gestellte Fragen wie SQL -Syntaxfehler und Leistungsprobleme können durch den Befehl erklären und langsam abfragen. 5) Die Leistungsoptimierungsmethoden umfassen die rationale Verwendung von Indizes, eine optimierte Abfrage und die Verwendung von Caches. Zu den Best Practices gehört die Verwendung von Transaktionen und vorbereiteten Staten

Warum MySQL verwenden? Vorteile und Vorteile Warum MySQL verwenden? Vorteile und Vorteile Apr 12, 2025 am 12:17 AM

MySQL wird für seine Leistung, Zuverlässigkeit, Benutzerfreundlichkeit und Unterstützung der Gemeinschaft ausgewählt. 1.MYSQL bietet effiziente Datenspeicher- und Abruffunktionen, die mehrere Datentypen und erweiterte Abfragevorgänge unterstützen. 2. Übernehmen Sie die Architektur der Client-Server und mehrere Speichermotoren, um die Transaktion und die Abfrageoptimierung zu unterstützen. 3. Einfach zu bedienend unterstützt eine Vielzahl von Betriebssystemen und Programmiersprachen. V.

So stellen Sie eine Verbindung zur Datenbank von Apache her So stellen Sie eine Verbindung zur Datenbank von Apache her Apr 13, 2025 pm 01:03 PM

Apache verbindet eine Verbindung zu einer Datenbank erfordert die folgenden Schritte: Installieren Sie den Datenbanktreiber. Konfigurieren Sie die Datei web.xml, um einen Verbindungspool zu erstellen. Erstellen Sie eine JDBC -Datenquelle und geben Sie die Verbindungseinstellungen an. Verwenden Sie die JDBC -API, um über den Java -Code auf die Datenbank zuzugreifen, einschließlich Verbindungen, Erstellen von Anweisungen, Bindungsparametern, Ausführung von Abfragen oder Aktualisierungen und Verarbeitungsergebnissen.

Überwachen Sie Redis Tröpfchen mit Redis Exporteur Service Überwachen Sie Redis Tröpfchen mit Redis Exporteur Service Apr 10, 2025 pm 01:36 PM

Eine effektive Überwachung von Redis -Datenbanken ist entscheidend für die Aufrechterhaltung einer optimalen Leistung, die Identifizierung potenzieller Engpässe und die Gewährleistung der Zuverlässigkeit des Gesamtsystems. Redis Exporteur Service ist ein leistungsstarkes Dienstprogramm zur Überwachung von Redis -Datenbanken mithilfe von Prometheus. In diesem Tutorial führt Sie die vollständige Setup und Konfiguration des Redis -Exporteur -Dienstes, um sicherzustellen, dass Sie nahtlos Überwachungslösungen erstellen. Durch das Studium dieses Tutorials erhalten Sie voll funktionsfähige Überwachungseinstellungen

So sehen Sie sich den SQL -Datenbankfehler an So sehen Sie sich den SQL -Datenbankfehler an Apr 10, 2025 pm 12:09 PM

Die Methoden zum Anzeigen von SQL -Datenbankfehlern sind: 1. Fehlermeldungen direkt anzeigen; 2. Verwenden Sie Showfehler und Warnungsbefehle anzeigen; 3.. Greifen Sie auf das Fehlerprotokoll zu. 4. Verwenden Sie Fehlercodes, um die Ursache des Fehlers zu finden. 5. Überprüfen Sie die Datenbankverbindung und die Abfrage -Syntax. 6. Verwenden Sie Debugging -Tools.

See all articles