2012-04-01 8 views
2

Ich arbeite an einem PHP/MySQL Stat Logging Programm und versuche die beste MySQL DB Struktur dafür zu finden.MySQL Tabellen Setup für heute, gestern, monatliche Logs

Es gibt einen Bereich, in dem die Besucher die Datumsstatistiken (dh die letzten 20 Einträge) sehen können, aber auch die Gesamtstrategie, die Gesamtstatistik und die Gesamtstatistik der letzten 30 Tage .

Aus den Daten, die ich ziehe, werden die Echtzeitstatistiken alle 60 Sekunden mit mindestens 10 neuen Einträgen pro Update aktualisiert.

Ist meine Logik korrekt einrichten zwei Tabellen ... man als „heutigen“ Statistiken und andere zu tun, als das gesamte Archiv zu handeln ... wie:

todays_stats
id
from_url
entry_date

overall_stats
id
from_url
entry_date

Dann Doppeleinsatz für jeden neuen Eintrag, aber die todays_stats um Mitternacht jede Nacht über einen cron-Job gestutzt?

Oder gibt es eine effizientere Möglichkeit, dies zu tun?

+1

eine Tabelle wäre besser, dann verwenden Sie eine Abfrage, um die gewünschten Daten zu erhalten. Sie können GROUP BY verwenden, um tägliche oder wöchentliche oder andere Statistiken zu erhalten. –

Antwort

1

Es hängt von Ihrer täglichen stat Zeilenanzahl ab, ob Sie historische Daten löschen und wie viele Indizes Sie haben. Wir müssen historische Daten löschen und haben 7 ~ 8 Indizes mit einer großen Menge an Statistikdaten, also trennen wir Daten in Tages-Tabellen und schreiben gespeicherte Prozeduren, um Daten zu holen (letzter Tag, letzter 7 Tag, letzter 30 Tag usw.). Dropping-Tabelle ist viel schneller als DELETE FROM table WHERE index=6-month-old-data

0

denke ich, beste Weg zu sein, ist eine Tabelle zu halten, die den aktuellen Datensatz halten wird, dann werden Sie separate Tabelle für die Gesamtstatistik haben und um Mitternacht werden Sie alle Daten von Strom zum Gesamttabelle Einsatz mit

INSERT INTO `overall` SELECT * FROM `current` 

Abfrage. Dann werden Sie die aktuelle Tabelle nach dem erfolgreichen Kopieren der Daten abschneiden.

+0

Danke Alex! Das werde ich heute Abend mit den Beispieldaten versuchen und sehen, wie es funktioniert. –