Thorsten Jung: Perfomance Frage

Hallo Gemeinde,

ich bastle gerade an einem Counter Script.
Jetzt frage ich mich, was schneller ist.

Die Logs in eine ASCII Datei zu schreiben oder in eine MySQL DB?

Problem bei einer ACSII Datei, diese wird nach ner Zeit ziemlich groß und ich muss alle Paar Wochen die Datei leeren.

Kann mir da vielleicht jemand einige Tipps geben?

Schöne Grüße

  1. Hallo,

    macht sich bei Textdateien gut wenn man vielleicht Monatlich eine Logdatei anlegt. Ewig will man ja meist die Counterlogs nicht horten, hat man die in Monatlich getrennten Dateien kann man leicht auch die alten Dateien per Script entsorgen.

    Gruß Helmut

    1. Ok, aber im großen und ganzen, was würdest du empfehlen.
      Mal angenommen ich bin ziemlich faul und möchte trotzdem alles in eine Log schreiben.

      So ab 30 000 wäre wohl ne SQL DB besser oder?

      1. Hallo,

        Ok, aber im großen und ganzen, was würdest du empfehlen.

        ...eigentlich reine Geschmackssache ob Textbasiert oder in DB.

        Mal angenommen ich bin ziemlich faul und möchte trotzdem alles in eine Log schreiben.

        Davon bin ich nicht ausgegangen ;-)
        Das anlegen einer Datei wenn ein neuer Monat ran ist geht ja mit einer Datumsabfrage mit relativ wenig Fleiß. Wenn du das alles in einer DB speicherst musste ja auch den Code dafür tippen. Fragt sich was weniger Aufwand ist...

        So ab 30 000 wäre wohl ne SQL DB besser oder?

        Warscheinlich schon eher, es kommt auch drauf an was Du alles loggen willst und was der Server so verkraftet.

        Gruß Helmut

        1. Hallo,

          Ok, aber im großen und ganzen, was würdest du empfehlen.
          ...eigentlich reine Geschmackssache ob Textbasiert oder in DB.

          Eigentlich ist mir das ja egal. Leicht ist ja beides.

          Mal angenommen ich bin ziemlich faul und möchte trotzdem alles in eine Log schreiben.
          Davon bin ich nicht ausgegangen ;-)
          Das anlegen einer Datei wenn ein neuer Monat ran ist geht ja mit einer Datumsabfrage mit relativ wenig Fleiß. Wenn du das alles in einer DB speicherst musste ja auch den Code dafür tippen. Fragt sich was weniger Aufwand ist...

          Ich denke die MySQL Version ist einfacher. Aber das Problem ist,
          ich habe mehrer Projekte und möchte auf nur eine DB Zugreifen. Prinzipiell kein Problem, sofern man Externen DB Zugriff aktiviert hat, aber ich glaube sowas geht ziemlich auf die Performance des Scriptes.
          Aber ist wohl immer noch besser, als alle einzelnen Dateien zusammen "Würfeln" und daraus dann die Statistik generieren.

          So ab 30 000 wäre wohl ne SQL DB besser oder?
          Warscheinlich schon eher, es kommt auch drauf an was Du alles loggen willst und was der Server so verkraftet.

          So ganz viele Sachen sind es nicht, aber bei dem Traffic den ich im Moment habe, sind die 30 000 ziemlich voll, wenn man von einem "normalen" Datensatz spricht.

          Denke ich werde mich für die MySQL Variante entscheiden.
          Oder kennst du vielleicht noch ein Contra Arrgument?

          Schöne Grüße aus Herford

  2. hi,

    ich bastle gerade an einem Counter Script.
    Jetzt frage ich mich, was schneller ist.

    Die Logs in eine ASCII Datei zu schreiben oder in eine MySQL DB?

    Kommt drauf an. Wenn die Seiten ohnehin aus dem Content gemacht sind der in einer DB abgelegt ist, dann baue ich den Zähler auch gleich in eine Tabelle dort im DBMS.

    Ansonsten habe ich sehr gute Erfahrungen mit Berkeley DB's (DB_File) für solche Sachen, siehe PerlBase

    http://perlbase.xwolf.de/cgi-bin/perlbase.cgi?display=16&id=9

    Gruss, Rolf

    --
    SELFforum - Das Tor zur Welt!
    Theoretiker: Wie kommt das Kupfer in die Leitung?
    Praktiker: Wie kommt der Strom in die Leitung?
  3. Hallo Thorsten,

    Die Logs in eine ASCII Datei zu schreiben oder in eine MySQL DB?

    Die sinnvollste Lösung dürfte es sein, die Log-Einträge in eine Text-Datei zu schreiben. Die
    brauchst du nur im Append-Modus zu öffnen und dann hineinzuschreiben. Zur Auswertung dann
    würde ich sie des Nachts in ein RDBMS übertragen.

    Aber eigentlich sind diese 'Counter Scripte' totaler Quatsch. Der Webserver loggt die Zugriffe
    doch schon mitt, benutze doch einfach seine Logfiles.

    Grüße,
     CK

    --
    So, wie ein Teil ist, ist das Ganze.
  4. Die Logs in eine ASCII Datei zu schreiben oder in eine MySQL DB?

    in eine ASCII Datei

    Problem bei einer ACSII Datei, diese wird nach ner Zeit ziemlich groß und ich muss alle Paar Wochen die Datei leeren.

    die DB wird mindestens genauso gross (vermutlich eher größer).

    Kann mir da vielleicht jemand einige Tipps geben?

    Die Frage ist was du mit den Daten vor hast.

    solange du nur die Daten aufzeichnen willst, ist eine ASCII Datei immer schneller, da der ganze overhead der DB wegfällt und zusätzlich die Übertragung der Daten über eine Netzwerkverbindung läuft, eine Fetsplatte ist immer schneller.

    Und die größe der Datei dürfte auch kleiner sein (ich kenn mich aber nicht so mit den interna von mySQL aus)

    Struppi.