Query-Cache in MySQL aktivieren

Seit der Version 4.0 besitzt MySQL einen Query-Cache. Dieser Cache speichert Ergebnisse von SQL-Abfragen im Speicher und antwortet, wenn die exakt gleiche Daten-Abfrage erneut kommt, mit dem gecachten Ergebnis.

Jede Tabelle hat ihren eigenen Cache. Bei schreibendem Zugriff (Daten Manipulation) auf die Tabelle muss deren Cache gelöscht werden. Die Aktivierung des Caches ist daher vor allem dann sinnvoll, wenn die Anwendung mehr aus der Datenbank liest, als schreibt. 

In den meisten Web-Anwendungen, wie beispielsweise Foren oder Datenbank-Archive werden Daten wesentlich öfter abgefragt als geschrieben, so dass die Aktivierung des Query-Cache in MySQL einen hohen Performance-Gewinn bringen kann.

Aktiviert werden kann dieser Cache per Konfiguration im Abschnitt [mysqld] der my.cnf Konfigurationsdatei von MySQL. Eine Beispiel-Konfiguration könnte so aussehen:

# Maximale Groesse eines Abfrage Ergebnisses, damit es gecached wird
query_cache_limit       = 1M
# Gesamtgroesse des Cache
query_cache_size        = 16M

Der Status des Cache, also wie viele Anfragen sich beispielsweise im Cache befinden und wie gut der zur Verfügung stehende Cache-Speicher genutzt wird, kann man sich mit folgendem Statement anzeigen lassen:

SHOW STATUS LIKE 'Qcache%';

Wichtig ist, dass die Zahl „Qcache_lowmem_prunes“ möglichst gering bleibt, da sie steigt, wenn aufgrund fehlenden Speichers Anfragen aus dem Cache entfernt wurden. In diesem Fall ist es sinnvoll die „query_cache_size“ zu erhöhen.

Dokumentation des MySQL Query-Cache auf den Seiten von MySQL