実行速度の遅いクエリの統計を取得する


10

私のデータベースアプリケーションは、さまざまなクエリを実行します。私はlog_min_duration_statement1000に設定しました。ただし、そこに記録されたクエリは常に遅くなるとは限りません。ほとんどの場合、数ミリ秒しかかかりません。

すべてのクエリの統計情報を取得することは可能ですか?また、クエリが1000ミリ秒以上かかった頻度はどれくらいですか?


1
それが役立つかどうかを確認してください:log_min_duration_statement設定は無視されます。または、設定を変更した後で構成を再ロードするのを忘れました。
DanielVérité2015

回答:


11

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 ..

2

@JoishiBodioがpg_stat_statements拡張機能を使用して遅いクエリの統計情報を表示できると述べた方法。(私がしたように)インストールに苦労している人のために:

  1. pg_stat_statementsが利用可能な拡張機能のリストにあるかどうかを確認します。

    SELECT * FROM pg_available_extensions;
  2. postgresql-contribDebian / Ubuntuのシステムパッケージマネージャーを介してパッケージをインストールしてみてください。

    sudo apt-get install postgresql-contrib-9.5

次に、手順1を再度実行します。

  1. 追加pg_stat_statementsshared_preload_librariesPostgreSQLの設定で:

経由postgres.conf

    shared_preload_libraries = 'pg_stat_statements'

コマンドライン引数を介して(引用符なし!):

    postgres -c shared_preload_libraries=pg_stat_statements
  1. 次に、データベースに拡張機能を作成します。

    CREATE EXTENSION pg_stat_statements;
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.