Campaign Classic v7 - db モジュール pg_stat_statements の目的と使用方法
Adobe Campaign Classic v7 での db (データベース)モジュールの pg_stat_statements
の目的と使用について説明します。
説明 description
環境
Adobe Campaign Classic v7 (ACC v7)
問題/症状
-
db モジュール
pg_stat_statements
とは -
クライアントからイネーブルにするように要求される理由
-
アクティブ化の仕組み
解決策 resolution
-
pg_stat_statements モジュールは、サーバが実行するすべての SQL 文の実行統計を追跡する手段を提供します。
モジュールは、追加の共有メモリが必要なため、
postgresql.conf
でshared_preload_libraries
にpg_stat_statements
を追加して読み込む必要があります。つまり、モジュールを追加または削除するには、サーバーを再起動する必要があります。
リンク https://www.postgresql.org/docs/9.4/pgstatstatements.html
-
このテーブルにビュータイプのスキーマを実装すると、時間がかかるクエリを監視できます。
このようにして、クライアントはそれらを調整し、パフォーマンスを最適化することができます。
この拡張機能では、クエリの実行に関する指標を提供します。最も頻繁に実行されるクエリはどれか、およびそれぞれのクエリの所要時間です。
-
pg_stat_statements
-
postgres バージョンの公式 PostgreSQL contrib パッケージがインストールされていることを確認します。
code language-none $ dpkg -l | grep postgres postgresql-contrib-9.3
インストールされていない場合は、インストールします。
code language-none $ apt-get install postgresql-contrib-9.3
-
起動時にモジュールをプリロードするように
postgresql.conf
を変更します。デフォルト:
shared_preload_libraries = ''
新規:
shared_preload_libraries = 'pg_stat_statements'
pg_stat_statements
とauto_explain
の両方を使用する場合は、ONE レコードを使用し、コンマで区切ります。code language-none shared_preload_libraries = 'auto_explain,pg_stat_statements'
-
監視するデータベースで、次のクエリ
CREATE
実行します。auto_explain
の場合は、拡張機能の作成は必要ありません(pg_stat_statements
の場合のみ)。code language-none psql postgres=# \c mydatabase mydatabase=# CREATE EXTENSION pg_stat_statements;
-
postgresql.conf
のカスタマイズされたOPTIONSセクションで、次の行を追加します。code language-none pg_stat_statements.max = 5000 pg_stat_statements.track = all pg_stat_statements.save = on
-
postgresql サービスを再起動します。
例:データベース内で最もコストのかかる上位 5 件のクエリを取得します。
code language-none 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 as s inner join pg_database as d on d.oid = s.dbid where d.datname = 'Database_Name' order by total_time desc limit 5;
-