私のデータベースアプリケーションは、さまざまなクエリを実行します。私はlog_min_duration_statement
1000に設定しました。ただし、そこに記録されたクエリは常に遅くなるとは限りません。ほとんどの場合、数ミリ秒しかかかりません。
すべてのクエリの統計情報を取得することは可能ですか?また、クエリが1000ミリ秒以上かかった頻度はどれくらいですか?
私のデータベースアプリケーションは、さまざまなクエリを実行します。私はlog_min_duration_statement
1000に設定しました。ただし、そこに記録されたクエリは常に遅くなるとは限りません。ほとんどの場合、数ミリ秒しかかかりません。
すべてのクエリの統計情報を取得することは可能ですか?また、クエリが1000ミリ秒以上かかった頻度はどれくらいですか?
回答:
SQLコマンドで拡張pg_stat_statementsをインストールします
CREATE EXTENSION pg_stat_statements
これは、適切なユーザー(アプリケーションが使用するユーザーやdbaアカウントなど)を使用して作成することをお勧めします。拡張機能を作成するユーザーは、拡張機能も所有することに注意してください。
これを使用するにはサーバーを再起動する必要があります(postgresql.confの構成をメモリ消費に影響する小さなビットに変更する必要があるため)が、すべてのクエリの統計が得られます。
pg_stat_statementsが提供するものの詳細については、ドキュメントページを参照してください。pg_stat_statementsのpostgresql.conf設定ファイルの設定に関するクイックリファレンスについては、こちらを参照してください。
インストールして実行すると、pg_stat_statementsビューにクエリを実行して統計を表示できます。
select * from pg_stat_statements;
-- or
select * from pg_stat_statements where total_time / calls > 200; -- etc ..
@JoishiBodioがpg_stat_statements
拡張機能を使用して遅いクエリの統計情報を表示できると述べた方法。(私がしたように)インストールに苦労している人のために:
pg_stat_statements
が利用可能な拡張機能のリストにあるかどうかを確認します。
SELECT * FROM pg_available_extensions;
postgresql-contrib
Debian / Ubuntuのシステムパッケージマネージャーを介してパッケージをインストールしてみてください。
sudo apt-get install postgresql-contrib-9.5
次に、手順1を再度実行します。
pg_stat_statements
にshared_preload_libraries
PostgreSQLの設定で:経由postgres.conf
:
shared_preload_libraries = 'pg_stat_statements'
コマンドライン引数を介して(引用符なし!):
postgres -c shared_preload_libraries=pg_stat_statements
次に、データベースに拡張機能を作成します。
CREATE EXTENSION pg_stat_statements;