このクエリを使用して、すべてのデータベースで実行されたトランザクションの総数を読み取ります。
SELECT sum(xact_commit+xact_rollback) FROM pg_stat_database;
1つのデータベースだけに同じカウンタが必要な場合は、次を使用します。
SELECT xact_commit+xact_rollback FROM pg_stat_database WHERE datname = 'mydb';
TPS(1秒あたりのトランザクション数)を計算するには、クエリを数回実行し、時間間隔の差を計算します。
そのための既製のツールがあり、そのうちの1つはhttp://bucardo.org/wiki/Check_postgresです
詳細:http : //www.postgresql.org/docs/9.2/static/monitoring-stats.html#PG-STAT-DATABASE-VIEW
更新: Konradは彼の質問に対する私の誤解を修正しました。目標は、トランザクションではなくクエリをカウントすることでした。
クエリをカウントする方法は?
方法1
pg_stat_statements contribを使用します。
方法2
代表的な期間のクエリの完全なログ記録を有効にします。
完全なログを有効にするには、PostgreSQL 9.0〜9.3で、次の設定を変更します postgresql.conf
logging_collector = on
log_line_prefix = '%t '
log_rotation_size = 1GB
log_statement = all
クエリ期間も表示する場合は、のlog_min_duration_statement = 0
代わりに設定できますlog_statement = all
。これは、クエリのチューニングに非常に役立ちます。
次に、構成を再起動(再起動またはHUP)し、トラフィックを推定するのに十分なログを収集します。
注:どちらのメソッドにも、ユーザー定義関数に埋め込まれたクエリは含まれません。