PostgreSQLスキルアップノート(自己啓発のための個人サイト)
pg_stat_statementsインストール・設定編
【一覧に戻る】
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
■■■■ PostgreSQL スキルアップノート
■■■■
■◆■■ pg_stat_statementsインストール・設定編
■■■■
■■■■
■■■■ 2013/02/17
■■■■ 使用環境:PostgreSQL9.1.7 (CentOS6.2)
(C) 2013 ohdb
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
【マニュアル】
付録 F. 追加で提供されるモジュール・F.28. pg_stat_statements→●[マニュアル]
【参考記事】
→●[記事]
■1■ 概要
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
pg_stat_statementsは実行されたSQL文の統計情報を記録する機能。
単独で使う他、pg_statsinfoの収集対象データの一部としても利用される。
■2■ インストール
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
利用可能な拡張(Extension)であることを確認
【□】 psql -d postgres -c "select * from pg_available_extensions where name = 'pg_stat_statements'"
name | default_version | installed_version | comment
--------------------+-----------------+-------------------+-----------------------------------------------------------
pg_stat_statements | 1.0 | | track execution statistics of all SQL statements executed
CREATE EXTENSIONを実行してインストール
対象DBはpostgresに対して行う。
【□】 psql -d postgres -c "CREATE EXTENSION pg_stat_statements"
インストール後の確認
【□】 psql -d postgres -c "select * from pg_available_extensions where name = 'pg_stat_statements'"
name | default_version | installed_version | comment
--------------------+-----------------+-------------------+-----------------------------------------------------------
pg_stat_statements | 1.0 | 1.0 ★ | track execution statistics of all SQL statements executed
■3■ 基本設定
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
付録 F. 追加で提供されるモジュール・F.28. pg_stat_statements→●[マニュアル]
によりshared_preload_librariesの設定が必要であるため以下により行う。
【□】 vi $PGDATA/postgresql.conf
【□】 shared_preload_libraries = 'pg_stat_statements'
custom_variable_classesは9.2以降は不要
【□】 custom_variable_classes = 'pg_stat_statements'
※拡張機能など独自のパラメータを認識させるためのcustom_variable_classes は9.2で廃止された。
以下は必要に応じて設定(パラメータの詳細は次項)
【□】 pg_stat_statements.max = 30000
【□】 track_activity_query_size = 4096
※pg_stat_statements.max * track_activity_query_size
30000*4096=118MBの共有メモリを消費することになる。
■4■ 関連パラメータ詳細
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
付録 F. 追加で提供されるモジュール・F.28. pg_stat_statements→●[マニュアル]
・pg_stat_statements.max (integer) デフォルト1000
記録されるSQL文の最大数(pg_stat_statementsビューの最大行数)
超えると実行回数の低いSQL文から切捨て。
・・・切り捨てられるのは実行回数の低いものからなので
実行回数が少なくても着目すべきSQLが消えてしまう恐れあり。
・pg_stat_statements.track (enum) デフォルトはtop
どんなSQL文が対象?
top 直接発行された最上層のSQL文のみ。
all 関数の中から呼び出された文なども対象。
none 文に関する統計情報収集を無効
・pg_stat_statements.track_utility (boolean) デフォルトはon
ユーティリティコマンドを記録するかどうか。
ユーティリティコマンドとはSELECT、INSERT、UPDATE、DELETE以外のすべてを指す。
・pg_stat_statements.save (boolean) デフォルトはon
offの場合サーバ終了時に統計情報が保存されない、
・track_activity_query_size (integer) デフォルトは1024バイト
これは本体のパラメータで、記録されるSQL文の長さを設定する。
【注意】メモリ消費
pg_stat_statements.max * track_activity_query_sizeバイトの共有メモリを消費する。
前項で設定した例だと 30000*4096/1024/1024=118MBも使うことになる。
注意が必要。
■5■ 関連ファンクション
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
・pg_stat_statements_reset() returns void
pg_stat_statementsによって収集したすべての統計情報を削除。
例
psql -d postgres -c "select count(*) from pg_stat_statements;"
psql -d postgres -c "select pg_stat_statements_reset()"
psql -d postgres -c "select count(*) from pg_stat_statements;"
count
-------
81
pg_stat_statements_reset
--------------------------
count
-------
2
以上