MySQL: Query Cache
Wenn die wichtigsten Tuningeinstellungen für MySQL gemacht sind, lohnt es sich, auch einen Blick auf den Query Cache zu werfen. Dieser speichert das Ergebnis von SQL-Abfragen und kann es somit bei Bedarf aus dem Arbeitsspeicher wiedergeben. Gerade für abfragen, die auf Webseiten live ausgeführt und deren Ergebnis aus irgendeinem Grund nicht auf dem Webserver gecacht wird, dürfte das interessant sein. Im Wesentlichen beschränkt sich die Konfiguration auf die folgenden Angaben:
query_cache_type=1
query_cache_size=6M
query_cache_limit=1M
Zuerst wird der cache aktiviert, dann wird die Größe bestimmt und schließlich der maximale Speicherplatz pro zwischengespeicherter Abfrage angegeben.
Um zu sehen, wie sich der query cache macht, kann man diese Abfrage benutzen:
SHOW STATUS LIKE 'Qcache%';
Im Ergebnis bekommt man dann einen Eindruck, wir gut der Cache genutzt wird, indem man das Verhältnis von Hits und inserts betrachtet:
+-------------------------+---------+ | Variable_name | Value | +-------------------------+---------+ | Qcache_free_blocks | 81 | | Qcache_free_memory | 4412528 | | Qcache_hits | 3809 | | Qcache_inserts | 1355 | | Qcache_lowmem_prunes | 0 | | Qcache_not_cached | 309 | | Qcache_queries_in_cache | 650 | | Qcache_total_blocks | 1425 | +-------------------------+---------+
Übrigens: Einzelne Einträge im query cache werden entfernt, wenn sich in der Datenbank an entsprechende Stelle etwas ändert. Man bekommt also immer frische Ware.