web-dev-qa-db-fra.com

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 revoir chaque instruction SQL qu'une application effectue sur la base de données, pour des raisons de performances. Existe-t-il un moyen simple de consigner toutes les instructions exécutées par le serveur de base de données PostgreSQL? Merci.

23
Jin Kim

L'option de configuration que vous recherchez est log_statement = "all" (si vous voulez juste les instructions), ou log_min_statement_duration = <some number> si vous êtes juste après des requêtes "lentes" (pour une 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.

27
womble

Le module auto_explain Est très utile pour cela. Il enregistrera non seulement les instructions, mais également leurs plans d'exécution et pourra même enregistrer les instructions exécutées dans les fonctions PL/PgSQL. Les performances sont assez faibles, sauf si vous activez l'analyse, auquel cas vous subissez un peu de temps supplémentaire pour toutes les requêtes.

Voir auto_explain dans la documentation.

5
Craig Ringer

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

Exemples de rapports: ici et ici .

3
Severe_admin