1. Beschreiben Sie kurz die traditionelle LRU-verknüpfte Liste LRU: Am wenigsten verwendet Ich glaube, jeder ist mit der LRU-verknüpften Liste vertraut. Es handelt sich um eine grundlegende Datenstruktur. Ich glaube, Sie wurden während eines Vorstellungsgesprächs gefragt, was eine LRU-verknüpfte Liste ist, oder sogar gebeten, eine LRU-verknüpfte Liste von Hand zu schreiben. Wenn Sie den vorherigen Artikel gelesen haben: Sind Sie zwischen Abfrage-Cache und BufferPool verwechselt? Lass uns darüber reden! Sie kennen sicherlich den Buffer Pool-Mechanismus von MySQL und wissen, dass die Datenseite die kleinste Einheit der MySQL-Datenorganisation ist. Und Sie wissen auch, dass Datenseiten mithilfe der LRU-Datenstruktur mit verknüpften Listen gemeinsam im Pufferpool organisiert sind. Tatsächlich ist die sogenannte LRU-verknüpfte Liste im Wesentlichen eine bidirektionale zirkuläre verknüpfte Liste, wie unten gezeigt: Als Nächstes beschreiben wir den Mechanismus zum Laden von MySQL-Daten durch Kombination der LRU-verknüpften Liste und des Datenseitenmechanismus: Wir nennen die von der Festplatte gelesene Datenseite eine junge Seite, und die junge Seite wird direkt am Anfang der verknüpften Liste platziert. Wenn eine Datenseite verwendet wird, die bereits in der LRU-verknüpften Liste vorhanden ist, wird die Datenseite ebenfalls als junge Seite betrachtet und an den Anfang der verknüpften Liste verschoben. Auf diese Weise sind die Daten am Ende der verknüpften Liste die am wenigsten verwendeten Daten. Wenn die Kapazität des Pufferpools nicht ausreicht oder der Hintergrundthread die Datenseite aktiv aktualisiert, wird zuerst die Datenseite am Ende der verknüpften Liste aktualisiert. 2. Nachteile der herkömmlichen LRU-Linkliste Sie haben sicher schon einmal vom Prinzip der räumlichen Lokalität auf Betriebssystemebene gehört: Räumliche Lokalität: Dies bedeutet, dass beim Lesen eines Datenelements wahrscheinlich auch die in den umgebenden Speicheradressen gespeicherten Daten gelesen werden. Daher unterstützt Sie das Betriebssystem beim Vorablesen eines Teils der Daten. MySQL verfügt auch über einen Vorlesemechanismus!
Aus dem Obigen ist ersichtlich, dass der Vorteil des sogenannten Vorlesemechanismus eigentlich der ursprünglichen Designabsicht von LRU zuwiderläuft, die am wenigsten kürzlich verwendeten Datenseiten auf die Festplatte zu schreiben. 3. MySQL LRU-verknüpfte Liste Als Nächstes wollen wir uns ansehen, wie der Pufferpool von MySQL die LRU-verknüpfte Liste anpasst und welche Probleme InnoDB mithilfe von LRU lösen konnte. Wenn das Unternehmen eine große Menge an CRUD ausführt, müssen Datenseiten kontinuierlich in die LRU-verknüpfte Liste im Pufferpool gelesen werden. Die Länge der LRU-verknüpften Liste von MySQL ist wie folgt. Die LRU-verknüpfte Liste ist von MidPoint in zwei Teile unterteilt: Neue Unterliste und Alte Unterliste. Davon entfallen etwa 5/8 auf die neue Unterliste und 3/8 auf die alte Unterliste. In der neuen Unterliste werden neue Seiten gespeichert, in der alten Unterliste alte Seiten. Wir können den Standardwert von MidPoint wie folgt anzeigen.
Dies ist eigentlich eine Designidee zur Trennung heißer und kalter Daten. Es bietet große Vorteile gegenüber der herkömmlichen LRU-verknüpften Liste. 4. Vorteile der angepassten MySQL-LRU-verknüpften Liste <br /> Bei der MySQL-LRU-verknüpften Liste wird die verknüpfte Liste durch MidPoint in zwei Teile aufgeteilt. Die neu von der Festplatte gelesenen Daten werden an den Anfang der alten Unterliste gestellt. Auf diese Weise werden die häufig aufgerufenen Datenseiten in der neuen Unterliste nicht auf die Festplatte geschrieben, selbst wenn Sie tatsächlich „select * from t;“ verwenden. Unter normalen Umständen wird beim Zugriff auf eine Cache-Seite in der alten Unterliste die Cache-Seite in die neue Unterliste befördert und wird zu Hot Data. Wenn Sie jedoch mit „select * from t“ eine große Datenmenge in die alte Unterliste laden und dann in weniger als 1 Sekunde erneut darauf zugreifen, werden die während dieses Zeitraums aufgerufenen zwischengespeicherten Seiten nicht zu Hot Data heraufgestuft. Diese 1 Sekunde wird durch den Parameter innodb_old_blocks_time gesteuert. Darüber hinaus ist auch New SubList optimiert. Wenn Sie auf das erste Viertel der Daten in New SubList zugreifen, werden diese nicht an den Anfang der LRU-verknüpften Liste verschoben. Das Obige ist eine kurze Analyse der Details der LRU-verknüpften Liste von MySQL. Weitere Informationen zur LRU-verknüpften Liste von MySQL finden Sie in den anderen verwandten Artikeln auf 123WORDPRESS.COM! Das könnte Sie auch interessieren:
|
<<: Die HTML-Eingabedateisteuerung begrenzt den Typ der hochgeladenen Dateien
1. Entpacken Sie die Datei an den gewünschten Ort...
Inhaltsverzeichnis Zwei Module zur Verwendung von...
<br />Verwandte Artikel: 9 praktische Vorsch...
Beim Erstellen eines SPA müssen Sie häufig bestim...
Inhaltsverzeichnis JavaScript-Objekte 1. Definiti...
Erstellen Sie eine neue server.js Garn init -y Ga...
Inhaltsverzeichnis Verwendung Strukturzweige Code...
Inhaltsverzeichnis Erster Schritt der Installatio...
1. Nginx-Dienstgrundlage Nginx (Engine x) wurde s...
Auf keinen Fall. Es stellt sich heraus, dass es L...
Ergebnisse erzielenImplementierungscode html <...
Inhaltsverzeichnis 1. Was ist ein Auslöser? 2. Er...
In diesem Artikel wird der spezifische Code von F...
Verständnis von Umfragen Tatsächlich liegt der Sc...
1. Unter 800 x 600 gibt es keine horizontale Bild...