Simone: Häufige Mysql Anfragen cachen Sinn / Unsinn

Hi,

Macht es Sinn bei einer Suchfunktion häufige query(s) als zip im Fileformat abzulegen bzw zu cachen.

Platz ist genügend da auf meinen Server ;o)
Warum den nicht nutzen!

Eckdaten
derzeitige db Größe 44,9 MiB
vorraussichtliche Größe 70 bis 80 MiB

Mein neues Projekt ist grob gesagt eine Suchmaschine.
Datenbank Abfragen gehen super schnell.
Das hat sehrviel Arbeit gemacht. Und soll auch so bleiben.

Meine Vorstellung:

if ($f_cache and is_readable($cache_file_name))
{
 $test =gzip -t $cache\_file\_name 2> /dev/null;  echo $?;
}

if ($test == 0 and file_exists($cache_file_name))
{
 $A=@unserialize(@implode(@gzfile($cache_file_name)));
}

Simone

  1. Hi,

    Macht es Sinn bei einer Suchfunktion häufige query(s) als zip im Fileformat abzulegen bzw zu cachen.

    Platz ist genügend da auf meinen Server ;o)
    Warum den nicht nutzen!

    Kennst Du den eingebauten Query-Cache von Mysql?

    Gruß
    Reiner

    1. Hallo Reiner

      Kannte ich nicht, danke ! Das ist eine gute Erweiterung von Mysql

      Dennoch
      UPDATE, DELETE und INSERT löschen den Zwischenspeicher.
      Somit müsste ich mit zwei Datenbänken arbeiten. die ich in Regelmäßigen Abständen abgleiche. Scheint mir kein Vorteil.
      User haben die Möglichkeit Begriffe der db hinzuzufügen.

      Simone

      1. Hallo Simone,

        Kannte ich nicht, danke ! Das ist eine gute Erweiterung von Mysql

        Dennoch
        UPDATE, DELETE und INSERT löschen den Zwischenspeicher.
        Somit müsste ich mit zwei Datenbänken arbeiten. die ich in Regelmäßigen Abständen abgleiche. Scheint mir kein Vorteil.
        User haben die Möglichkeit Begriffe der db hinzuzufügen.

        das ist auch richtig so!
        Wenn Du sonst ständig etwas abfragst bzw. zurücklieferst, was entweder nicht mehr in der Datenbank ist oder sich seit _Deiner_ Version des Cachens geändert hat, führt das einfach zu einem System, das nicht funktioniert.

        Ich kämpfe aber auch mit solchen Problemen und weiß was Du meinst.
        Der Cache ist etwas unintelligent, d.h. mir fehlen Einschränkungsmöglichkeiten (ist keine Kritik an mysql).
        Wenn ich z.B. einen Datensatz lösche a la:
        delete from tabelle where datum <='2007-12-31'
        Sollte eine Abfrage wie:
        select * from tabele where datum >='2008-01-01'
        dennoch aus dem Cache kommen (können), sofern Abfrage dort vorhanden.

        Interessante Frage!
        Vielleicht kennt jemand, was sich wie ein Proxy dazwischen hängt?

        Viele Grüße,
        Reiner

  2. vorraussichtliche Größe 70 bis 80 MiB

    Bei der Datenbankgrösse brauchst du dir darüber keinerlei Gedanken zu machen. Da lacht dich jedes Datenbanksystem aus. Kritisch werden erst Datenbankgrössen im GB-Bereich

    1. vorraussichtliche Größe 70 bis 80 MiB

      Bei der Datenbankgrösse brauchst du dir darüber keinerlei Gedanken zu machen. Da lacht dich jedes Datenbanksystem aus. Kritisch werden erst Datenbankgrössen im GB-Bereich

      Sorry, aber das ist Unsinn!
      Es kommt doch drauf an, wie die Querys aussehen.

      Gruß
      Reiner

      1. yo,

        Sorry, aber das ist Unsinn!
        Es kommt doch drauf an, wie die Querys aussehen.

        auch das alleine ist Unsinn, es kommt bei Performance auf viele Faktoren an, die Anzahl der Datensätze spielt eine Rolle, die Abfrage selbst sicherilch auch eine und viele weitere Faktoren wie Hardware, DBMS, Indexe, Kardinalität.

        Letztlich ist es ein Zusammenspiel aus vielen verschiedenen Faktoren...

        Ilja

        1. yo,

          Sorry, aber das ist Unsinn!
          Es kommt doch drauf an, wie die Querys aussehen.

          auch das alleine ist Unsinn, es kommt bei Performance auf viele Faktoren an, die Anzahl der Datensätze spielt eine Rolle, die Abfrage selbst sicherilch auch eine und viele weitere Faktoren wie Hardware, DBMS, Indexe, Kardinalität.

          Letztlich ist es ein Zusammenspiel aus vielen verschiedenen Faktoren...

          das wollte ich damit sagen!