Come posso sapere quante query al secondo il mio database Postgres sta eseguendo?
Come posso sapere quante query al secondo il mio database Postgres sta eseguendo?
Risposte:
Utilizzare questa query per leggere il numero totale di transazioni eseguite in tutti i database:
SELECT sum(xact_commit+xact_rollback) FROM pg_stat_database;
Se si desidera lo stesso contatore per un solo database, utilizzare:
SELECT xact_commit+xact_rollback FROM pg_stat_database WHERE datname = 'mydb';
Per calcolare il TPS (transazioni al secondo), eseguire la query più volte e calcolare la differenza nell'intervallo di tempo.
Ci sono strumenti già pronti per questo, uno di questi è http://bucardo.org/wiki/Check_postgres
Maggiori informazioni: http://www.postgresql.org/docs/9.2/static/monitoring-stats.html#PG-STAT-DATABASE-VIEW
Aggiornamento: Konrad ha corretto il mio malinteso sulla sua domanda. L'obiettivo era contare le query, non le transazioni.
Come contare le query?
Metodo 1
Usa pg_stat_statements contrib.
Metodo 2
Abilita la registrazione completa delle query per un periodo di tempo rappresentativo.
Per abilitare la registrazione completa, per PostgreSQL 9.0 - 9.3, modificare le seguenti impostazioni in postgresql.conf
logging_collector = on
log_line_prefix = '%t '
log_rotation_size = 1GB
log_statement = all
Se si desidera visualizzare anche la durata della query, è possibile impostare log_min_duration_statement = 0
invece di log_statement = all
. Questo è molto utile per l'ottimizzazione delle query.
Quindi ricaricare la configurazione (riavvio o HUP) e raccogliere log sufficienti per stimare il traffico.
Nota: nessuno dei due metodi includerà query incorporate nelle funzioni definite dall'utente.