2010-12-13 43 views

Répondre

1

Je ne suis pas sûr de ce que vous entendez par « statistiques » mais vous pouvez voir toutes les connexions ouvertes (et leur état de transaction) en interrogeant la vue du système pg_stat_activity:

http://www.postgresql.org/docs/current/static/monitoring-stats.html#MONITORING-STATS-VIEWS

+0

Eh bien, si cela fonctionne, rien ne m'empêche de créer un outil simple qui exécute cette requête toutes les 30 secondes et ajoute son résultat dans un journal. C'est ce que je veux dire par "statistiques". – Roman

+0

Vérifiez pgfoundry, je pense qu'il y a déjà des scripts qui circulent autour qui font cela –

1

En postgresql.conf enregistrement de jeu de

log_statement = 'all'    # none, ddl, mod, all 

et vérifier que

log_line_prefix='%t:%r:%a:%[email protected]%d:[%p]: ' 

contient% p, qui est l '[ID du processus] du SQL.

Après un rechargement des paramètres de base de données, dans le tableau * pg_stat_activity * vous pouvez lire la colonne procpid de au ralenti dans le processus de transaction.

Maintenant, vous pouvez parcourir les fichiers journaux pour voir quel code SQL a été exécuté sur les connexions avant qu'elles ne deviennent inactif dans la transaction.