Standardmäßig verwendet das System zur Schlüssel-Cache-Verwaltung die LRU-Strategie zur Auswahl der zu räumenden Schlüssel-Cache-Blöcke, unterstützt aber auch eine komplexere Methode namens Strategie des Einfügens am Mittelpunkt.
Bei Verwendung dieser Strategie wird die LRU-Kette in zwei
Teile aufgeteilt: eine heiße Unterkette und eine warme
Unterkette. Der Trennpunkt zwischen diesen beiden Teilen ist
nicht fest, sondern das Schlüssel-Cache-Verwaltungssystem
achtet darauf, dass der warme Teil nicht „zu
klein“ wird und immer mindestens
key_cache_division_limit
Prozent der
Schlüssel-Cache-Blöcke enthält.
key_cache_division_limit
ist eine
Komponente der strukturierten Schlüssel-Cache-Variablen,
d. h., ihr Wert ist ein Parameter, der pro Cache eingestellt
werden kann.
Wenn ein Indexblock aus einer Tabelle in den Schlüssel-Cache eingelesen wird, wird er an das Ende der warmen Unterkette gesetzt. Nach einer bestimmten Anzahl von Treffern (d. h. von Zugriffen auf den Block) wird er in die heiße Unterkette hochgestuft. Zurzeit ist die Anzahl der für das Hochstufen eines Blocks erforderlichen Treffer für alle Indexblöcke gleich (nämlich 3).
Ein Block, der in die heiße Unterkette hochgestuft wurde,
wird an das Ende der Kette gesetzt. Der Block kreist dann
innerhalb dieser Unterkette. Bleibt der Block lang genug am
Anfang der Unterkette, dann wird er in die warme Unterkette
zurückgestuft. Der Zeitpunkt wird vom Wert der
Schlüssel-Cache-Komponente
key_cache_age_threshold
bestimmt.
Der Schwellwert definiert, dass bei einem Schlüssel-Cache mit
N
Blöcken der am Anfang der
heißen Unterkette stehende Block an den Anfang der warmen
Unterkette gesetzt wird, sofern er nicht innerhalb der letzten
Treffer aufgerufen
wurde. Er wird dann erster Anwärter auf die Räumung, weil
für die Ersetzung vorgesehene Blöcke am Anfang der warmen
Unterkette entfernt werden.
N
×
key_cache_age_threshold / 100
Die Strategie des Einfügens am Mittelpunkt gestattet Ihnen,
Blöcke, die offensichtlich wichtig sind, immer im Cache zu
behalten. Wenn Sie die direkte LRU-Strategie bevorzugen,
belassen Sie den Wert von
key_cache_division_limit
auf der Vorgabe
von 100.
Die Strategie des Einfügens am Mittelpunkt ist hilfreich zur
Leistungssteigerung, wenn die Ausführung einer Abfrage einen
Indexscan erfordert und so im Endeffekt all diejenigen
Indexblöcke aus dem Cache wirft, die wichtigen B-Tree-Knoten
entsprechen. Um dies zu vermeiden, müssen Sie die Strategie
mit einem Wert von deutlich weniger als 100 für
key_cache_division_limit
verwenden, denn so
werden „wertvolle“, häufig gefundene Knoten auch
bei einem Indexscan in der heißen Unterkette gehalten.
Dies ist eine Übersetzung des MySQL-Referenzhandbuchs, das sich auf dev.mysql.com befindet. Das ursprüngliche Referenzhandbuch ist auf Englisch, und diese Übersetzung ist nicht notwendigerweise so aktuell wie die englische Ausgabe. Das vorliegende deutschsprachige Handbuch behandelt MySQL bis zur Version 5.1.