Je suis en train de passer en revue toutes les instructions SQL qu'une application utilise dans la base de données, pour des raisons de performance. Existe-t-il un moyen simple d'enregistrer toutes les instructions exécutées par le serveur de base de données PostgreSQL ? Merci.
Réponses
Trop de publicités?L'option de configuration que vous recherchez est log_statement = "all"
(si vous voulez seulement les déclarations), ou log_min_statement_duration = <some number>
si vous recherchez uniquement des requêtes "lentes" (pour une certaine valeur de "lent"). Voir http://www.postgresql.org/docs/current/static/runtime-config-logging.html pour plus de détails sur la configuration de la journalisation.
Le site auto_explain
est très utile pour cela. Il ne se contente pas d'enregistrer les instructions, il enregistre leurs plans d'exécution et peut même enregistrer les instructions exécutées dans les fonctions PL/PgSQL. L'impact sur les performances est assez faible, à moins que vous n'activiez l'analyse, auquel cas vous subissez un surcoût de temps assez important pour toutes les requêtes.
Voir auto_explain
dans la documentation.