Como posso saber quantas consultas por segundo meu banco de dados do Postgres está executando?
Como posso saber quantas consultas por segundo meu banco de dados do Postgres está executando?
Respostas:
Use esta consulta para ler o número total de transações executadas em todos os bancos de dados:
SELECT sum(xact_commit+xact_rollback) FROM pg_stat_database;
Se você deseja o mesmo contador para apenas um banco de dados, use:
SELECT xact_commit+xact_rollback FROM pg_stat_database WHERE datname = 'mydb';
Para calcular o TPS (transações por segundo), execute a consulta várias vezes e calcule a diferença ao longo do intervalo de tempo.
Existem ferramentas prontas para isso, uma delas é http://bucardo.org/wiki/Check_postgres
Mais informações: http://www.postgresql.org/docs/9.2/static/monitoring-stats.html#PG-STAT-DATABASE-VIEW
Atualização: Konrad corrigiu meu mal-entendido sobre sua pergunta. O objetivo era contar consultas, não transações.
Como contar consultas?
Método 1
Use pg_stat_statements contrib.
Método 2
Habilite o log completo de consultas por um período representativo.
Para habilitar o log completo, no PostgreSQL 9.0 - 9.3, altere as seguintes configurações em postgresql.conf
logging_collector = on
log_line_prefix = '%t '
log_rotation_size = 1GB
log_statement = all
Se você quiser ver também a duração da consulta, pode definir em log_min_duration_statement = 0
vez de log_statement = all
. Isso é muito útil para o ajuste de consultas.
Em seguida, recarregue a configuração (reinicie ou HUP) e colete o registro suficiente para estimar o tráfego.
Nota: nenhum dos métodos incluirá consultas incorporadas em funções definidas pelo usuário.