Comment savoir combien de requêtes par seconde ma base de données Postgres exécute?
Comment savoir combien de requêtes par seconde ma base de données Postgres exécute?
Réponses:
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.