Eine gut benutzte Piwik Installation wächst sehr schnell und kann zum Problem werden wenn man sich nicht darum kümmert. Bei Shared Webhosting gibt es manchmal maximal Größen für Datenbanken, aber auch bei Dedicated Servern kann es ab einer bestimmten Größe zu Problemen kommen. In Piwik gibt es die Archiv Tabellen (piwik_archive_*), die die Statistiken speichern und dann gibt es 2 große Log Tabellen (piwik_log_action, piwik_log_link_visit_action), aus denen die Statistiken zusammen gebaut werden. Man hat nun 2 Möglichkeiten die Datenbank zu verkleinern. Man kann die Einträge in den Log Tabellen löschen die schon processed wurden und wenn man keine "alten" Daten Griffbereit braucht, kann man auch noch die jeweiligen Archiv Tabellen löschen (vorher exportieren/archivieren).

Für die Log Tabellen einfach das Archive Crontab ausführen oder sicher sein das die Einträge wirklich abgearbeitet wurden. Am besten einmal von Hand aufrufen. Ich war mir sicher das es läuft, aber habe es doch von Hand aufgerufen und siehe da, es brach durch memory exhaustion an einer bestimmten Stelle ab. Nachdem ich das Memory Limit erhöht hatte lief es dann durch. Nun führt man folgenden SQL Befehl aus:

DELETE piwik_log_visit, piwik_log_link_visit_action
FROM piwik_log_visit INNER JOIN piwik_log_link_visit_action
WHERE piwik_log_visit.idvisit = piwik_log_link_visit_action.idvisit
AND visit_first_action_time <= DATE_SUB(CURDATE(), INTERVAL 30 DAY);
OPTIMIZE TABLE piwik_log_visit, piwik_log_link_visit_action;

Ganz am Ende stellt man ein wie viele Einträge man behalten möchte. In diesem Fall wird alles was älter als 30 Tage ist aus den Log Tabellen gelöscht. Kommt direkt aus dem Piwik FAQ: How to purge Piwik Logs?. Wer sich unsicher ist ob das wirklich richtig funktioniert, sollte vor dem ausführen eine Sicherheitskopie der beiden Tabellen oder gleich der ganzen Datenbank anlegen. Nach dem löschen noch ein Optimize Table auf die beiden Log Tabellen ausführen.

Ansonsten habe ich mir angewöhnt mehrere Piwik Installationen laufen zu lassen. Hat eine Webseite sehr viel Traffic, setzt man ein eigenes Piwik für sie auf. Durch das automatische Update ist die Wartung auch von mehreren Piwiks sehr einfach.

2 Responses to “Piwik Tweaks für große Datenbanken”

  • Ich habe sowas schon befürchtet – besonders komfortabel ist das Handling der Daten in Piwik nicht mit der ständigen Panik im Nacken, dass die Datenbank platzen könnte. Das hindert mich dann doch noch dran Piwik mit gutem Gewissen an weniger technikversierte Menschen weiterzuempfehlen. Danke jedenfalls für den Tip mit den Logs!

  • Axel

    Vielen Dank für die Tipps,

    inzwischen ist diese Funktionalität direkt in Piwik implementiert worden. In der aktuellen Version 1.6 kann man in der Administration auswählen (Anzahl von Tagen) wie lange die Logdaten behalten werden sollen. ACHTUNG: Defaultmäßig ist dieses Feature abgeschaltet, siehe „Piwik – Einstellungen -Privatsphäre – Alte Besucher-Logs aus der Datenbank entfernen“. Wird die Option aktiviert, dann kann man die genaue Dauer usw. einstellen.

    Viele Grüße,
    Axel

Leave a Reply