Detaillierte Erklärung des FreeList-Mechanismus von MySQL

Detaillierte Erklärung des FreeList-Mechanismus von MySQL

1. Einleitung

Nach dem Start von MySQL wird BufferPool initialisiert. Bevor Sie Abfragevorgänge ausführen, sind die Cache-Seiten in BufferPool leere Speicherblöcke, die noch nicht verwendet wurden und in denen keine Daten gespeichert sind.

Und Sie wissen auch, dass die Cache-Seite, auf die es verweist, direkt und eindeutig über die Beschreibungsinformationen der Cache-Seite gefunden werden kann.

Haben Sie schon einmal darüber nachgedacht, auf welcher Pufferseite die Datenseite abgelegt werden soll, die wir von der Festplatte lesen?

Dieses Problem führt zur Anzeige der Freiliste.

2. Kostenlose Liste

Tatsächlich handelt es sich bei der Free List um eine bidirektional verknüpfte Liste, die im Buffer Pool basierend auf Cache-Seitenbeschreibungsinformationen organisiert ist. Mit anderen Worten: Jeder Knoten in der freien Liste enthält die Beschreibungsinformationen, die der Cache-Seite entsprechen. Und die angegebene Cache-Seite (Cache-Seite) finden Sie über die Beschreibungsinformationen

Die ursprüngliche Absicht von InnoDB bei der Entwicklung von Free Lists besteht darin, die oben genannten Probleme zu lösen.

Wenn auf dieser Cache-Seite keine Daten gespeichert sind, werden die entsprechenden Beschreibungsinformationen in der Free List verwaltet. Wenn Sie zu diesem Zeitpunkt eine von der Festplatte gelesene Datenseite in die Cache-Seite einfügen möchten, müssen Sie zuerst einen Knoten in der freien Liste suchen (alle Knoten in der freien Liste verweisen auf eine Cache-Seite, die noch nie verwendet wurde). Anschließend können Sie die gelesene Datenseite in die Cache-Seite einfügen, auf die der Knoten verweist.

Entsprechend: Nachdem die Daten in die Datenseite eingefügt wurden. Der entsprechende Beschreibungsinformationsblock wird aus der Freiliste entfernt.

3. Wie kann festgestellt werden, ob sich die Datenseite im Cache befindet?

Fragen Sie sich, woher MySQL weiß, ob sich die gerade gelesene Datenseite auf der Cache-Seite befindet?

Die Implementierung dieser Funktion basiert auf einer anderen Datenstruktur: Hash-Tabelle

Schlüssel = Tablespace-Nummer + Datenseitennummer

Wert = Cache-Seitenadresse

Wenn es in der Hash-Tabelle vorhanden ist, bedeutet dies, dass die Datenseite bereits im Pufferpool vorhanden ist und die Cache-Seite im Pufferpool zuerst verwendet wird. Ich glaube, Sie können definitiv erraten, warum die Cache-Seiten im Pufferpool zuerst verwendet werden! Erstens wird zufälliger Festplatten-E/A vermieden. Zweitens kann es sich bei den Daten auf der Cache-Seite um geänderte, schmutzige Daten handeln.

Oben finden Sie eine ausführliche Erläuterung des FreeList-Mechanismus von MySQL. Weitere Informationen zum FreeList-Mechanismus von MySQL finden Sie in den anderen verwandten Artikeln auf 123WORDPRESS.COM!

Das könnte Sie auch interessieren:
  • Installation und Konfiguration von MySQL 5.6 unter Windows mit Screenshots und ausführlicher Anleitung
  • Verwendungshinweise für die Mysql-String-Interception-Funktion SUBSTRING
  • MySQL-Benutzererstellung und Autorisierungsmethode
  • mysql Index hinzufügen mysql wie man einen Index erstellt
  • Super detaillierte Analyse der MySQL Left Join-, Right Join- und Inner Join-Verwendung
  • Verwendung von „Replace“ in MySQL
  • Mehrere Möglichkeiten, die Versionsnummer von Mysql zu überprüfen
  • MySQL-Befehlszeile importiert SQL-Daten
  • So zeigen Sie das Root-Passwort von MySQL an oder ändern es, wenn Sie es vergessen haben (mit Bildern und Text)
  • So aktivieren Sie die Remoteverbindung zur MySQL-Datenbank

<<:  Umfassendes Verständnis von Zeilenhöhe und vertikaler Ausrichtung

>>:  Detaillierte Erläuterung zur Verwendung von Docker zum Erstellen einer einfachen Java-Entwicklungs- und Kompilierungsumgebung

Artikel empfehlen

Implementierungsmethode und Beispielcode des Tomcat-Klassenladers

Tomcat definiert intern mehrere ClassLoader, soda...

So verbergen und fälschen Sie die Versionsnummer in Nginx

1. Verwenden Sie den Curl-Befehl für den Standard...

Eine kurze Einführung in React

Inhaltsverzeichnis 1. CDN-Einführung 1.1 reagiere...

So zeigen Sie Serverhardwareinformationen in Linux an

Hallo zusammen, heute ist Double 12, habt ihr sch...

Das WeChat-Applet implementiert einen Videoplayer, der einen Bullet-Screen sendet

In diesem Artikel wird der spezifische Code für d...

So installieren Sie eine PHP7 + Nginx-Umgebung unter CentOS6.6

Dieser Artikel beschreibt, wie man eine PHP7 + Ng...

Tutorial zur Installation und Konfiguration von Hbase unter Linux

Inhaltsverzeichnis Hbase-Installation und -Konfig...

Was ist Nginx-Lastausgleich und wie wird er konfiguriert?

Was ist Lastenausgleich? Der Lastausgleich wird h...

Detailliertes Tutorial zum Ausführen von Selenium+Chromedriver auf dem Server

1. Einleitung Ich möchte Selenium verwenden, um D...

Detaillierte Erläuterung der allgemeinen Schritte zur SQL-Anweisungsoptimierung

Vorwort In diesem Artikel erfahren Sie hauptsächl...

Dieser Artikel hilft Ihnen, JavaScript-Variablen und -Datentypen zu verstehen

Inhaltsverzeichnis Vorwort: Freundliche Tipps: Va...