web-dev-qa-db-ja.com

最高実行クエリを確認/知る方法

データベースで最も実行回数の多いクエリの統計を収集したいと思います。

そのため、私はクエリを追跡する方法を知っている必要があります。それで、大きなDBがあるので、最も実行されたクエリの結果をキャッシュするビューまたはマテリアライズドビューを作成できます。

9
mamesaye

誰かがコメントで言ったように、 pg_stat_statements は統計を取得する方法です。これをpostgresql.conf

shared_preload_libraries = 'pg_stat_statements'

pg_stat_statements.max = 10000
pg_stat_statements.track = all

次に、このクエリを実行します。

CREATE EXTENSION pg_stat_statements; 

その後、このサンプルクエリ(上記のリンクからドキュメントをコピーしたもの)は、すべてのデータベースからの上位5つのクエリの統計を提供します。

SELECT query, calls, total_time, rows,
100.0 * shared_blks_hit / nullif(shared_blks_hit + shared_blks_read, 0) AS hit_percent
FROM pg_stat_statements ORDER BY total_time DESC LIMIT 5;

単一のデータベースの結果が必要な場合は、_ [から取得できるdbidでフィルタリングする必要がありますpg_databaseデータベース名で。上記のクエリにこのWHERE句を追加します。

WHERE dbid = (select oid from pg_database where datname = 'YOUR_DB_NAME')

参加することもできます。

これをテストするときは、stats/schemaテーブル自体へのクエリを除外することをお勧めします。次に例を示します。

AND query not similar to '%( pg_|information_schema)%'

データの視覚化に役立つ 無料の商用ツールがたくさんあります があります。

8
Matt