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 leeren Sie den Cache nach der Verwendung von Keep-Alive in Vue

Was ist Keepalive? Bei der normalen Entwicklung m...

Benutzerzentriertes Design

Ich wurde in letzter Zeit häufig zu einer offensi...

Detaillierte Diskussion der Unterschiede zwischen Schleifen in JavaScript

Inhaltsverzeichnis Vorwort Aufzählbare Eigenschaf...

js Implementierung des Verifizierungscode-Falls

In diesem Artikelbeispiel wird der spezifische Co...

Der MySQL-Server wird mit der Option --skip-grant-tables ausgeführt.

Der MySQL-Server läuft mit der Option --skip-gran...

Auszeichnungssprache - Phrasenelemente

Klicken Sie hier, um zum Abschnitt „HTML-Tutorial“...

HTML-Tutorial, HTML-Standardstil

html , Adresse , Blockzitat , Text , dd , div , d...

Tutorial zur DHCP-Konfiguration in der CentOS7-Umgebung

Inhaltsverzeichnis Konfigurationsbefehlsschritte ...

So legen Sie die Breite und Höhe von HTML-Tabellenzellen fest

Beim Erstellen von Webseiten tritt häufig das Pro...

So kapseln Sie die Karussellkomponente in Vue3

Zweck Kapseln Sie die Karussellkomponente und ver...

HTML-Tutorial: Sammlung häufig verwendeter HTML-Tags (6)

Verwandte Artikel: Anfänger lernen einige HTML-Ta...

Detaillierte Erklärung der grep- und egrep-Befehle in Linux

Vertreter / egrep Syntax: grep [-cinvABC] 'wo...

Docker View JVM-Speichernutzung

1. Rufen Sie den Hostcomputer des Docker-Containe...