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


9

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

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


1
ここでチェックしましたか?
Nelz


好奇心から、どのくらいの大きさですか?また、「最高実行」とは、最も頻繁に実行されるクエリ、または累積的に最も高額なクエリを意味しますか?そして、単純な見方をすれば、この点に関して何も惜しみません。
dezso

@ dezso:メインテーブルの30万行です。最も高価なものが優先されますが、最も頻繁に実行されることも知りたいです。
mamesaye 2015年

@a_horse_with_no_nameがすでに言ったように.. pg_stat_statements拡張がおそらく必要です。
Joishi Bodio 2015年

回答:


8

誰かがコメントで言ったように、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)%'

あります無料と商用ツールの束は、データを視覚化することができます。

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