In einem aktuen Fall war eine Datenbank mit ca. 60.000 Einträgen und vielen Spaltendaten bei der Abfrage simpler gefilterter Daten mit einem Limit von 0, 10 langsam und es hieß diese zu optimieren. Neben der Überprüfung der Abfragen über
EXPLAN SELECT * FROM *
in welcher dann ersichtlich ist, welche Keys hinzugezogen werden (diese sind oft ausschlaggebend für die Geschwindigkeit der Abfrage), sollte man sich ebenfalls einmal den Query-Cache des Servers ansehen.
Hierfür gibt es (oder auch noch nicht, dann hinzufügen) eine Abfrage in der my.cnf namens query_cache_limit
, welche oftmals auf 0
steht. Damit ist der Query Cache deaktiviert und es werden keine Abfragen gecached. Das Caching der Abfragen speichert diese zwischen und führt diese nicht jedes Mal erneut aus (sofern sich die Tabelle nicht geändert hat). Das ist auf jeden Fall ratsam, wenn eine Datenbank nicht ständig geändert wird. Man stelle diesen Wert einfach mal auf 8M
o.Ä. und beobachte in phpMyAdmin die Statusvariablen unter „Abfragen Cache“. Dort erkennt man die Auslastung des aktuellen Cache, wie viele Abfragen aufgenommen und insbesondere wie viele herausgeschmissen wurden (weil der Cache zu klein ist).
In unserem Fall haben wir einen Geschwindigkeitsschub von 1127ms (also über eine Sekunde) erreichen können. Gebe zu: Der Server ist eine kleine Krücke. Aber die Resultate überzeugen.
Schreibe einen Kommentar