How can I tell how many queries per second my Postgres database is executing?
-
Have you checked out: serverfault.com/questions/268506/…– thtsigmaCommented Mar 4, 2013 at 18:23
-
1@thtsigma Doesn't answer this question. Queries stats for MySQL, only transaction stats for PG.– Konrad GarusCommented Mar 4, 2013 at 18:26
-
1Have you tried any Postgres profiling tools, such as pg_top?– emalloveCommented Mar 4, 2013 at 21:14
-
postgresql.org/docs/9.3/static/… e.g. select tup_inserted from pg_stat_database– sivannCommented May 24, 2014 at 7:52
-
I provided a script for doing a similar calculation on another answer: stackoverflow.com/a/73569756/1714997– Dominykas MostauskisCommented Sep 1, 2022 at 13:00
1 Answer
Use this query to read total number of transactions executed in all databases:
SELECT sum(xact_commit+xact_rollback) FROM pg_stat_database;
If you want the same counter for just one database, use:
SELECT xact_commit+xact_rollback FROM pg_stat_database WHERE datname = 'mydb';
To calculate TPS (transactions per second), run the query several times and calculate difference over time interval.
There are ready made tools for that, one of them is http://bucardo.org/wiki/Check_postgres
More info: http://www.postgresql.org/docs/9.2/static/monitoring-stats.html#PG-STAT-DATABASE-VIEW
Update: Konrad corrected my misunderstanding of his question. The goal was to count queries, not transactions.
How to count queries?
Method 1
Use pg_stat_statements contrib.
Method 2
Enable full logging of queries for a representative period of time.
To enable full logging, for PostgreSQL 9.0 - 9.3, change following settings in postgresql.conf
logging_collector = on
log_line_prefix = '%t '
log_rotation_size = 1GB
log_statement = all
If you want to see also query duration, you can set log_min_duration_statement = 0
instead of log_statement = all
. This is very useful for query tuning.
Then reload config (restart or HUP) and collect enough log to estimate traffic.
Note: neither method will include queries embedded in user-defined functions.
-
I know how to calculate transactions per second. The question is about queries per second specifically. One transaction can have 0 or more queries. Commented Mar 7, 2013 at 17:25
-
-