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


                                                                                                            
以上 
inserted by FC2 system