26 votes

Postgres : Comment puis-je voir toutes les instructions SQL exécutées par le serveur de base de données ?

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.

31voto

Ryan Sampson Points 2898

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.

5voto

Bunny Joel Points 43

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.

3voto

Joe Zoller Points 577

Bien sûr, vous pouvez détecter les requêtes les plus lentes par vous-même, mais je vous conseille d'utiliser pgFouine - un analyseur de journaux PostgreSQL. Il est facile à installer et très utile.

Exemples de rapports : aquí y aquí .

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X