Sie können mit der folgenden Anweisung überprüfen, ob der Abfrage-Cache auf Ihrem MySQL-Server vorhanden ist:
mysql> SHOW VARIABLES LIKE 'have_query_cache';
+------------------+-------+
| Variable_name | Value |
+------------------+-------+
| have_query_cache | YES |
+------------------+-------+
Um den Abfrage-Cache zu defragmentieren und den vorhandenen
Speicher so besser zu nutzen, setzen Sie die Anweisung
FLUSH QUERY CACHE
ab. Diese Anweisung
entfernt keine Abfragen aus dem Cache.
Die Anweisung RESET QUERY CACHE
entfernt alle
Abfrageergebnisse aus dem Abfrage-Cache. Auch die Anweisung
FLUSH TABLES
tut dies.
Wenn Sie die Leistung des Abfrage-Caches überwachen wollen,
können Sie mit SHOW STATUS
die
Statusvariablen für den Cache anzeigen:
mysql> SHOW STATUS LIKE 'Qcache%';
+-------------------------+--------+
| Variable_name | Value |
+-------------------------+--------+
| Qcache_free_blocks | 36 |
| Qcache_free_memory | 138488 |
| Qcache_hits | 79570 |
| Qcache_inserts | 27087 |
| Qcache_lowmem_prunes | 3114 |
| Qcache_not_cached | 22989 |
| Qcache_queries_in_cache | 415 |
| Qcache_total_blocks | 912 |
+-------------------------+--------+
Beschreibungen dieser Variablen finden Sie in Abschnitt 5.2.4, „Server-Statusvariablen“. An dieser Stelle wollen wir einige Anwendungsmöglichkeiten für sie beschreiben.
Die Gesamtzahl der SELECT
-Anweisungen
berechnen Sie mit folgender Formel:
Com_select + Qcache_hits + queries with errors found by parser
Den Wert Com_select
erhalten Sie über
folgende Formel:
Qcache_inserts + Qcache_not_cached + queries with errors found during the column-privileges check
Der Abfrage-Cache verwendet Blöcke variabler Länge, d. h.
Qcache_total_blocks
und
Qcache_free_blocks
lassen Rückschlüsse auf
die Speicherfragmentierung des Abfrage-Caches zu. Nach Absetzen
von FLUSH QUERY CACHE
bleibt nur ein einziger
freie Block übrig.
Alle im Cache gespeicherten Abfragen benötigen mindestens zwei Blöcke (einen für den Abfragetext und einen weiteren für die Ergebnisse). Ferner benötigt jede Tabelle, die von einer Abfrage verwendet wird, einen Block. Wenn jedoch zwei oder mehr Abfragen dieselbe Tabelle verwenden, muss nur ein Tabellenblock reserviert werden.
Mithilfe der in der Statusvariable
Qcache_lowmem_prunes
gespeicherten
Information können Sie die Größe des Abfrage-Cache
optimieren. Diese Variable zählt die Anzahl der Abfragen, die
aus dem Cache entfernt wurden, um Speicherplatz für die
Aufnahme neuer Abfragen zu schaffen. Der Abfrage-Cache
entscheidet auf der Basis der zuletzt verwendeten Abfragen,
welche Abfragen aus dem Cache entfernt werden können. Hinweise
zur Optimierung finden Sie in
Abschnitt 5.14.3, „Konfiguration des Anfragen-Cache“.
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.