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

So passen Sie die Bash-Eingabeaufforderung in Linux an

Vorwort Wie wir alle wissen, ist Bash (die Bourne...

Der Unterschied zwischen br und br/ in HTML

Antwort von Stackflow: Einfaches <br> genügt...

Semantik, Schreiben und bewährte Methoden für Link A

Die Semantik, der Schreibstil und die Best Practi...

Implementierung der Graustufenversion mit Nginx und Lua

Installieren Sie memcached yum install -y memcach...

Das Homepage-Design spiegelt am besten das Niveau des Webdesigners wider

Bei den vielen Projekten, an denen ich mitgearbei...

Implementierungsschritte zur Kapselung von Komponenten basierend auf React

Inhaltsverzeichnis Vorwort Wie kapselt Antd Kompo...

Eine kurze Diskussion über benutzerdefinierte VUE-Uni-App-Komponenten

1. Übergeordnete Komponenten können Daten über Re...

Ein netter HTML-Druckcode unterstützt das Umblättern

ylbtech_html_drucken HTML-Druckcode, unterstützt S...

Ursachen und Lösungen für MySQL-Deadlocks

Die Datenbank ist wie das Betriebssystem eine gem...

Klassischer Beispielcode für JavaScript-Funktionsaufrufe

Inhaltsverzeichnis Klassisches Beispiel für einen...

Vue implementiert die Shake-Funktion (kompatibel mit ios13.3 und höher)

Vor Kurzem habe ich mit shake.js eine ähnliche Fu...

Schritte zur VMware-Konfiguration des VMnet8-Netzwerks

Inhaltsverzeichnis 1. Einleitung 2. Konfiguration...