MySQL Query Cache Fragmentierung

MySQL Query Cache Fragmentierung

Die MySQL Query Cache Fragmentierung kann man durch die Status-variable „Qcache_free_blocks“ ermitteln.
Die zeigt mir wie viele Blöcke im Query Cache vom Typ FREE sind. Die schlechtest mögliche Fragmentierung wäre diejenige, bei der es zwischen jedem Blockpaar, ein etwas zu kleinen freien Block gibt, so das jeder zweite Block ein freier Block sein muss oder wäre.

Bei Opsview nutze ich den Nagios Check check_mysql_performance. Hiermit lässt sich schnell ermitteln ob bei einem MySQL Server der Query Cache fragmentiert ist.

Defragmentierung  des Query Caches

Mir dem FLUSH QUERY CACHE; lässt sich der Query Cache dann auch aufräumen.
[stextbox id=“bash“]mysql -e „FLUSH QUERY CACHE;“[/stextbox]

Dieser Befehl defragmentiert den Query Cache, indem er alle benutzten Blöcke nach „nach oben“ verschiebt. Dadurch wird der freie Block speicher nach hinten verschoben und somit wieder frei und benutzbar.
Allerdings wird dadurch der Query Cache für die zeit des Aufräumens Blockiert und es können keine Anfragen daraus bedient werden.

Fragmentierung des Query Caches reduzieren

Es gibt keine Möglichkeit die Fragmentirung des Query Caches zu verhindern.
Allerdings kann man mit der Variable „query_cache_min_res_unit“ einen Wert wählen der dafür sorgt das kein Speicher für zu kleine Query´s im Cache verschwendet wird. Wenn der Wert zu klein ist, dann verschwendet der Server wenig Speicher, muss aber die Blöcke öfters neu belegen. Was wiederum mehr Arbeit für den Server bedeutet. Ist der wert zu groß hat er zwar weniger Arbeit, aber dafür eine größere Fragmentierung.

Hier muss man abwägen zwischen verschwendeten CPU-Zyklen oder verschwendeten RAM.

Query Caches leeren

Um alle gecachten Querys im Query Cache zu entfernen muss man den Befehl RESET QUERY CACHE; benutzen.
[stextbox id=“bash“]mysql -e „RESET QUERY CACHE;“[/stextbox]

Dieser Befehl verwirft dann wirklich alle gecachten Querys und der Query Cache ist zu 100% Frei.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

*