Eddie: Caching umfangreicher(!) Datenbankabfragen

Beitrag lesen

Hallo Sven,

sorry fuer die lange Antwortzeit, eigentlich sollte der Fragesteller ja doch etwas schneller reagieren :-/ Habe mich aber die letzten Tage doch mit einem ganz anderen Teil meines Projekts beschäftigt und das Cache-Thema etwas vernachlässigt :-(

Bedenken und analysieren mußt du, wobei bei deiner Aktion am meisten Zeit verloren geht. Stelle DAS fest, und du hast den Ansatzpunkt für eine Optimierung gefunden.

Also mal angenommen, ich finde die schnellste Datenbankabfrage, dann besteht jede Anfrage (ohne Caching) grob aus folgenden Teilen:
   - PHP-Script ausführen
   - DB-Anfrage ausführen
   - Ergebnis aufbereiten
   - Ergebnis ausliefern

Mit Datei-Caching würde es folgendermaßen aussehen:
   - direkter HTTP-Zugriff auf die XML-Datei (Dateiname mittels Ajax)
       falls vorhanden:
       - ausliefern, fertig

falls nicht vorhanden:
       - Scriptaufruf mittels Apache mod_rewrite/404
       - obige Schritte
       - XML-Datei cachen

Wenn du 6 Millionen Einträge in der DB hast, wirst du über kurz oder lang auch 6 Millionen Dateien mit Cacheergebnissen haben.

Ok, da gäbe es ja die Möglichkeit, nur die tatsächlich angefragten Suchen zu cachen. Und über das Attribut "letzter Zugriff" jeder Cache-Datei müsste es auch möglich sein, selten genutzte Abfragen regelmäßig zu löschen. Dann wären das noch ein paar Zehntausend XML-Dateien: wäre es dann nicht (unter Umgehung des PHP-Scripts) tatsächlich eine sinnvolle Optimierung?

Gruss,
Eddie

--
Old men and far travelers may lie with authority.