データベースで最も実行回数の多いクエリの統計を収集したいと思います。
そのため、私はクエリを追跡する方法を知っている必要があります。それで、大きなDBがあるので、最も実行されたクエリの結果をキャッシュするビューまたはマテリアライズドビューを作成できます。
誰かがコメントで言ったように、 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)%'
データの視覚化に役立つ 無料の商用ツールがたくさんあります があります。