Supprimer les vieux enregistrements de Piwik
Publié le 20 octobre 2010 - EnBref
Dernière mise à jour le 14 juillet 2011
- Article
- |
- Commentaires (0)
- |
- Fichiers attachés (0)
Piwik, le remplacent du logiciel libre de mesure de statistiques web PHPMyVisites, est une alternative intéressante au service comme GoogleAnalytics, pour peu que l'on dispose d'un serveur où héberger le logiciel. Piwik enregistre toutes les infos disponibles sur les visites dans une base MySQL, qui grossit donc fortement au fil du temps...

NB : Depuis la version 1.5.1, Piwik propose de faire le ménage directement dans l'interface web, sous "Paramètres/Privacy". Il est possible de paramétrer le nombre de jours à conserver et la fréquence des suppressions. Un vrai bonheur !
Je n'avais pas encore trouver de commande pour faire simplement et finement le ménage dans la base de données sans avoir à trop galérer. Voici un petite commande SQL pour effacer les enregistrements qui ont plus de x jours de la base de données de Piwik.
C'est fort pratique si la taille de la base de données est un souci, sachant que la base de Piwik devient rapidement conséquente même en analysant un site ayant un trafic modéré. Avoir une base de données légère est également très perceptible au niveau du chargement des pages de statistiques.
La requête SQL
Là voilà :
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_server_date <= CURRENT_DATE() - 30
Il est bien sur possible de l'exécuter dans PHPMyAdmin.
Le paramètre 30 en fin de requête permet de définir le nombre de jours à conserver. Ici donc les 30 derniers jours d'enregistrements ne seront pas supprimés.
Pour les gros bœufs
Avant de connaitre cette requête SQL, j'utilisais le méthode d'écrite dans la FAQ de Piwik, à savoir supprimer les tables dont le noms commence par piwik_archive_*, ou exécuter la requête suivante (remplacer X par l'id du site à vider) :
DELETE FROM piwik_log_visit WHERE idsite = X
Ça marche bien aussi, mais c'est moins subtil... :-)



