Vous n'êtes pas identifié(e).
Bonjour,
je voudrais ajouter un champ dans une table qui compte le nombre de SELECT par jour pour chaque ligne.
Auriez-vous une methode permettant de faire ceci sans écrouler les performances?
Il y aura en effet un grand nombre de SELECT pour chaque ligne par jour, et donc la gestion du compteur devra être optimisée.
Merci d'avance pour vos réponses!
Jérôme
Hors ligne
Je suis pas sur qu'on puisse, pg_stat_user_tables ne permet de voir que le nombre de lignes insert, update et delete.
Après y a peut etre un autre moyen par postgres.
Perso je l'aurais codé en php, rajouter un compteur sur les selects initiés est plus simple je trouve.
Hors ligne
Pour le coder en PHP j'aurais besoin d'utiliser une zone memoire, genre memcached ou autre pour stocker les compteurs par ligne et régulierement mettre à jour les compteurs en base.
Un peu plus complexe mais surement plus efficace que faire des UPDATE/INSERT à chaque select pour incrémenter le compteur...
Je suis pas sur qu'on puisse, pg_stat_user_tables ne permet de voir que le nombre de lignes insert, update et delete.
Après y a peut etre un autre moyen par postgres.Perso je l'aurais codé en php, rajouter un compteur sur les selects initiés est plus simple je trouve.
Hors ligne
PostgreSQL ne comptabilise pas le nombre de SELECT réalisés sur les tables. Il n'est pas non plus possible d'ajouter un trigger sur les SELECT. La règle sur les SELECT ne fonctionne que sur les vues. Bref, vous allez devoir coder ça au niveau applicatif.
Guillaume.
Hors ligne
Et en travaillant sur les logs? (en loguant tous les ordres SQL et en passant dessus un script ou un programme)
La difficulté que je vois ce sera le volume de log généré (suivant l'activité de la base) et comment gérer les compteurs et les fichiers de log pour ne pas relire à chaque fois les fichiers.
Mais sinon, au niveau applicatif, si c'est possible c'est sans doute le plus simple (si une seule application, et qu'il y a une couche d'accès qui va bien)
Hors ligne