Naps: Ab wann lohnt sich Cachen

Hi,

würdet Ihr das Ergebnis einer DB Abfrage auch cachen wenn das "Ergebnis" nur ein paar mal benötigt wird?

Oder erst nach 100, 200 mal oder mehr?

Gibt es Richtwerte?

MfG Naps

  1. Man müsste zu erst ein Ziel definieren.
    Wenn deine Seite bereits super schnell läd, würde ich mir um jegliche Optimierung keine Gedanken machen. Wenn deine Webseite aber eher langsam läd, würde ich sie optimieren.
    Dabei würden jedoch andere Optimierungsmöglichkeiten im Vordergrund stehen z.B. Request sparen. Das Datenbank Caching spielt wie ich finde eine eher untergeordnete Rolle. Die wenigsten Webseiten haben eine Datenmenge im Hintergrund wo sich das Cachen lohnen würde.

    Ansonsten gibt es noch die Möglichkeit den Output einer Webseite zu cachen. Damit spart man sich natürlich auch die meistens DB Zugriffe.

    Ich würde grob zusammenfassen, alles was langsam läuft sollte man beschleunigen. Ein Caching wäre da nur eine Möglichkeit.

    Gruß
    Uli Hoeneß in einer Boing 404 als Botschafter in die Ukraine entsendender
    T-Rex

  2. Hallo,

    Gibt es Richtwerte?

    Die Richtwerte für sämtliche Performance-Optimierungen sind:

    100 Performance messen
    200 Hot Spots / Bottlenecks identifizieren
    300 Verbesserungen vornehmen
    GOTO 100

    Vollständiger:

    100 Implementierung nach bestem Gewissen (»mature optimization«)
    200 Performance messen
    300 Hot Spots / Bottlenecks identifizieren
    400 Verbesserungen vornehmen
    500 Regeln destillieren für die künftige Implementierung
    GOTO 100

    Übrigens ist das bekannte Bonmot über Reguläre Ausdrücke auch auf Caching anwendbar:

    “Some people, when confronted with performance problems, think: ‘I know, I’ll use caching.’ Now they have one problems.” (sic) ;)

    Mathias

  3. Wie oft und in welcher Zeit ist "ein paar mal"?
    Wenn es innerhalb einer Aktion ist würde ich es in einer Tabelle zwischenspeichern, temporäre oder RAM Tabelle oder wie auch immer das heißt.

    Sonst, wenns keine Probleme macht würde ich es nicht tun. Miss die Zeit die so eine Abfrage braucht und entscheide dann ob sich weitere Gedanken lohnen oder nicht.

  4. würdet Ihr das Ergebnis einer DB Abfrage auch cachen wenn das "Ergebnis" nur ein paar mal benötigt wird?

    Das kommt auf viele weitere Umstände an. Handelt es sich z.B. um ein CMS und werden quasistatische Webseiten erzeugt, dann würde ich in jedem Fall die ganzen resultierenden Seiten cachen.

    Oder erst nach 100, 200 mal oder mehr?

    Meinst Du, *erfolgte* Requests oder *zu erwartende* Requests? Und in welchem Zeitfenster? Und wie viele verschiedende Requests können es denn sein? Wie hoch sind die Datenmengen? Es nützt nichts zu cachen, wenn die Verwaltung des Caches "teurer" (bezogen auf den Zeitaufwand) wird als die Abfragen.

    Gibt es Richtwerte?

    Eher nicht. Das ist zu individuell, da sind so allgemeine Aussagen nicht möglich. Wenn Deine Webseite aber z.B. bei 100 Requests/Minute erlahmt oder gar down geht, weil für den Aufbau der Startseite 50 Datenbankabfragen nötig sind, dann würde ich nicht nur über einen Cache der Results sondern über eine ganze Anzahl weiterer Optimierungen (auch in der Richtung "Tut dat not?") nachdenken.

    Jörg Reinholz