Postgresが実行しているクエリは毎秒何件ですか?


15

Postgresデータベースが実行している1秒あたりのクエリ数を確認するにはどうすればよいですか?


あなたがチェックアウトした:serverfault.com/questions/268506/...を

@thtsigmaこの質問には答えません。MySQLの統計情報を照会し、PGのトランザクション統計情報のみを照会します。

1
pg_topなどのPostgresプロファイリングツールを試しましたか?
エマラブ

postgresql.org/docs/9.3/static/…例:pg_stat_databaseからtup_insertedを選択
sivann

回答:


11

このクエリを使用して、すべてのデータベースで実行されたトランザクションの総数を読み取ります。

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)し、トラフィックを推定するのに十分なログを収集します。

注:どちらのメソッドにも、ユーザー定義関数に埋め込まれたクエリは含まれません。


1秒あたりのトランザクションの計算方法を知っています。質問は、特に1秒あたりのクエリについてです。1つのトランザクションに0個以上のクエリを含めることができます。
コンラッドガルス
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.