Combien de requêtes par seconde mon Postgres exécute-t-il?

15

Comment savoir combien de requêtes par seconde ma base de données Postgres exécute?

Konrad Garus
la source
@thtsigma Ne répond pas à cette question. Requête les statistiques pour MySQL, uniquement les statistiques de transaction pour PG.
1
Avez-vous essayé des outils de profilage Postgres, tels que pg_top ?
emallove
postgresql.org/docs/9.3/static/… par exemple, sélectionnez tup_instered dans pg_stat_database
sivann

Réponses:

11

Utilisez cette requête pour lire le nombre total de transactions exécutées dans toutes les bases de données:

SELECT sum(xact_commit+xact_rollback) FROM pg_stat_database;

Si vous voulez le même compteur pour une seule base de données, utilisez:

SELECT xact_commit+xact_rollback FROM pg_stat_database WHERE datname = 'mydb';

Pour calculer le TPS (transactions par seconde), exécutez la requête plusieurs fois et calculez la différence sur l'intervalle de temps.

Il existe des outils prêts à l'emploi pour cela, l'un d'eux est http://bucardo.org/wiki/Check_postgres

Plus d'informations: http://www.postgresql.org/docs/9.2/static/monitoring-stats.html#PG-STAT-DATABASE-VIEW


Mise à jour: Konrad a corrigé mon incompréhension de sa question. L'objectif était de compter les requêtes, pas les transactions.

Comment compter les requêtes?

Méthode 1

Utilisez pg_stat_statements contrib.

Méthode 2

Activez la journalisation complète des requêtes pendant une période représentative.

Pour activer la journalisation complète, pour PostgreSQL 9.0 - 9.3, modifiez les paramètres suivants dans postgresql.conf

logging_collector = on
log_line_prefix = '%t '
log_rotation_size = 1GB
log_statement = all

Si vous souhaitez voir également la durée de la requête, vous pouvez définir log_min_duration_statement = 0 au lieu de log_statement = all. Ceci est très utile pour l'optimisation des requêtes.

Rechargez ensuite la configuration (redémarrage ou HUP) et collectez suffisamment de journal pour estimer le trafic.

Remarque: aucune des méthodes n'inclura de requêtes intégrées dans des fonctions définies par l'utilisateur.

filiprem
la source
Je sais comment calculer les transactions par seconde. La question concerne spécifiquement les requêtes par seconde. Une transaction peut avoir 0 ou plusieurs requêtes.
Konrad Garus