Zusammenfassung wichtiger Komponenten von MySQL InnoDB

Zusammenfassung wichtiger Komponenten von MySQL InnoDB

Innodb umfasst die folgenden Komponenten

1. innodb_buffer_pool:

Es wird hauptsächlich zum Zwischenspeichern von Daten und Indizes verwendet (um genau zu sein, da die Tabelle in InnoDB durch einen gruppierten Index organisiert ist, sind die Daten nur der Blattknoten des Primärschlüsselindex).

2. Puffer wechseln:

1 Wenn die Aktualisierungsanweisung den Datensatz des Sekundärindex aktualisieren soll, sich die Seite, auf der sich der Datensatz befindet, jedoch nicht im innodb_buffer_pool befindet, aktualisiert innodb den Sekundärindex

Die Aktualisierungsaktion der Seite wird in einem bestimmten Bereich (Änderungspuffer) von innodb_buffer_pool zwischengespeichert. Wenn eine andere Transaktion B diese sekundäre Indexseite später lesen möchte,

Da sich die Seite noch nicht im innodb_buffer_pool befindet, lädt Transaktion B die Seite zuerst in den innodb_buffer_pool, sodass die Zielseite in den innodb_buffer_pool gelangt.

Als nächstes können Sie die Indexseite entsprechend dem Inhalt des Änderungspuffers aktualisieren. Dadurch können E/A-Vorgänge eingespart und die Leistung verbessert werden.

2 Natürlich gibt es auch andere Aktualisierungsmechanismen (Änderungen im Änderungspuffer werden auf die Festplatte geschrieben). Wenn MySQL beispielsweise relativ inaktiv ist, wird es auch während des langsamen Herunterfahrens aktualisiert.

Pufferinhalt auf Festplatte ändern

3 Überwachung des Änderungspuffers

InnoDB-Status der Engine anzeigen;

-------------------------------------
PUFFER EINFÜGEN UND ADAPTIVER HASH-INDEX
-------------------------------------
Ibuf: Größe 1, freie Listenlänge 0, Segmentgröße 2, 0 Zusammenführungen
Zusammengeführte Operationen:
 0 einfügen, 0 löschen, 0 markieren, 0 löschen
verworfene Operationen:
 0 einfügen, 0 löschen, 0 markieren, 0 löschen
Hash-Tabellengröße 34679, Knoten-Heap hat 0 Puffer
Hash-Tabellengröße 34679, Knoten-Heap hat 0 Puffer
Hash-Tabellengröße 34679, Knoten-Heap hat 0 Puffer
Hash-Tabellengröße 34679, Knoten-Heap hat 0 Puffer
Hash-Tabellengröße 34679, Knoten-Heap hat 0 Puffer
Hash-Tabellengröße 34679, Knoten-Heap hat 0 Puffer
Hash-Tabellengröße 34679, Knoten-Heap hat 0 Puffer
Hash-Tabellengröße 34679, Knoten-Heap hat 0 Puffer
0,00 Hash-Suchen/s, 0,00 Nicht-Hash-Suchen/s
---
PROTOKOLL
---
Protokollsequenznummer 24635311
Protokoll gelöscht bis 24635311
Seiten bis 24635311 geleert
Letzter Kontrollpunkt bei 24635302
0 ausstehende Log-Leervorgänge, 0 ausstehende CHKP-Schreibvorgänge
10 Log-E/A's erledigt, 0,00 Log-E/A's/Sekunde

3. Adaptiver Hash-Index:

1 Wenn einige Zeilen in der Tabelle sehr häufig verwendet werden, liest InnoDB im besten Fall zuerst die Indexseite, dann die Datenseite und dann

Suchen Sie die Daten. Der Hash-Index verwendet den Hash des B + -Baumindex als Schlüssel und den Wert des B + -Baumindex (die Seite, auf die er verweist) als Wert. Mit der Einführung des Hash-Index kann InnoDB den Hash des Index berechnen

Der Wert befindet sich direkt auf der Seite, auf der sich die Daten befinden. Daher ist die Hash-Indizierung für nicht bereichsbezogene Suchen vorteilhaft.

2 Wenn InnoDB den Bash-Index verwenden soll, müssen mehrere Bedingungen erfüllt sein: 1. innodb_adaptive_hash_index=1, damit InnoDB den Hash-Index aktiviert; dies ist jedoch nur die halbe Arbeit.

InnoDB erstellt keine Hash-Indizes für alle Zeilen in der Tabelle. Es erstellt nur Hash-Indizes für häufig aufgerufene Zeilen in der Tabelle. Es ist Verschwendung, Hash-Indizes für kalte Daten zu erstellen.

innodb_adaptive_hash_index_parts kann die Partitionierung des Hash-Index festlegen, was die Parallelität verbessern kann.

4. Redo-Log-Puffer:

Der Inhalt des Redo-Log-Puffers wird regelmäßig auf die Festplatte geschrieben. Wenn der Redo-Log-Puffer größer eingestellt wird, ist es für MySQL von Vorteil, große Transaktionen zu verarbeiten. Der Grund dafür ist, dass bei der Verarbeitung großer Transaktionen

Sie können Redo in den Redo-Log-Puffer schreiben, anstatt es auf die Festplatte zu schreiben. Da der Speicher schneller ist als die Festplatte, können große Transaktionen schneller verarbeitet werden. Mit anderen Worten: Der Redo-Log-Puffer ist größer.

In diesem Fall können einige unnötige Datenträgerleerungsvorgänge vor dem Commit reduziert werden.

5. Systemtabellenbereich:

Der InnoDB-Systemtabellenbereich enthält Folgendes: InnoDB-Datenwörterbuch, einige Speicherbereiche wie Doublewrite\Changebuffer\Undolog, wenn innodb_file_per_table

Wenn es nicht geöffnet ist, werden die vom Benutzer erstellten Tabellen in diesem Systemtabellenbereich gespeichert. In diesem Fall kann der Systemtabellenbereich auch als gemeinsam genutzter Tabellenbereich angesehen werden.

Oben finden Sie den detaillierten Inhalt der Zusammenfassung der wichtigen Komponenten von MySQL InnoDB. Weitere Informationen zu MySQL InnoDB-Komponenten finden Sie in den anderen verwandten Artikeln auf 123WORDPRESS.COM!

Das könnte Sie auch interessieren:
  • Detaillierte Erläuterung der Speicherverwaltung der MySQL InnoDB-Speicher-Engine
  • Hauptfunktionen von MySQL Innodb: Einfügepuffer
  • Zusammenfassung der MySQL InnoDB-Sperren
  • So unterscheiden Sie MySQLs innodb_flush_log_at_trx_commit und sync_binlog
  • Detailliertes Beispiel des MySQL InnoDB-Sperrmechanismus
  • Ausführliche Erläuterung der InnoDB-Sperren in der MySQL-Technologie
  • Ändern Sie die MySQL-Datenbank-Engine in InnoDB
  • Analyse der Unterschiede zwischen Mysql InnoDB und MyISAM
  • So ermitteln Sie die Höhe des MySQL InnoDB B+-Baums
  • Eine kurze Einführung in MySQL InnoDB ReplicaSet

<<:  Docker stellt nginx bereit und mountet Ordner und Dateioperationen

>>:  Detaillierte Erklärung von Inline-Elementen und Block-Level-Elementen in häufig verwendeten HTML-Tags

Artikel empfehlen

Erklären, wie die SQL-Effizienz analysiert wird

Der Befehl „Explain“ ist der erste empfohlene Bef...

Detaillierte Erklärung der Bind-Mounts für die Docker-Datenspeicherung

Bevor Sie diesen Artikel lesen, hoffe ich, dass S...

Detaillierte Erläuterung des MySQL-Isolationsebenen-Operationsprozesses (cmd)

Beispielvorgang für nicht festgeschriebenes Lesen...

Entwicklungshandbuch für Chrome-Plugins (Erweiterungen) (vollständige Demo)

Inhaltsverzeichnis Vorne geschrieben Vorwort Was ...

Detaillierte Erklärung der JavaScript-Ereignisse onblur und onfocus

Auf HTML-Seiten verfügen visuelle Elemente wie Sc...

Der Prozess der Installation und Konfiguration von Nginx in Win10

1. Einleitung Nginx ist ein kostenloser, quelloff...

Detaillierte Erklärung der Webseiten-Screenshot-Funktion in Vue

Seit Kurzem besteht im Projekt die Anforderung, B...

Detaillierter Prozess zur Implementierung des 2048-Minispiels im WeChat-Applet

Rendern Beispielcode Heute werden wir das WeChat-...

So unterstützen Sie vollständiges Unicode in MySQL/MariaDB

Inhaltsverzeichnis Einführung in utf8mb4 Fehler b...

Besser aussehende benutzerdefinierte CSS-Stile (Titel h1 h2 h3)

Rendern Häufig verwendete Stile im Blog Garden /*...

Detaillierte Erklärung des CSS3-Rotationswürfelproblems

3D-Koordinatenkonzept Wenn sich ein Element dreht...

3 häufige Fehler beim Lesen von MySQL Binlog-Protokollen

1. mysqlbinlog: [FEHLER] unbekannte Variable „def...