centos postgresql9.1 pg_stat_statementsを導入

SQLログの出力

log_statement = 'none'                   # none, ddl, mod, all

none : 出力しない(デフォルト)
ddl : DDLを出力
mod : DDLDML
all : 全てのSQL
を設定する。設定後、log_directory, log_filenameの設定のファイルに実行SQLが吐かれる。

スロークエリの出力

log_min_duration_statement = 0

-1 : 出力しない(デフォルト)
0 : 全てのSQLを出力
ns : n秒以上かかったSQLを出力
log_directory, log_filenameのログファイルに出力される

pg_stat_statementsを導入する
contribのインストール

# yum install --enablerepo=pgdg91 postgresql91-contrib

postgresql.conf pg_stat_statementsのロード

shared_preload_libraries = 'pg_stat_statements'         # (change requires restart)
# /etc/init.d/postgresql-9.1 restart

view pg_stat_statements を作成するのだが、
/usr/share/pgsql/contrib
にcontrib pkgが存在しない。
調べてみると、Contrib directory in PostgreSQL 9.1で、/usr/pgsql-9.1/share/extensionにあるとのこと。
で、pg_stat_statements--1.0.sql名前で作成SQLが見つかる。

実行

$ psql -d database -f /usr/pgsql-9.1/share/extension/pg_stat_statements--1.0.sql
Use "CREATE EXTENSION pg_stat_statements" to load this file.

CREATE EXTENSIONで実行してくれ。とのこと。

$ psql database
=# CREATE EXTENSION pg_stat_statements;
=# SELECT query, calls, total_time, rows  FROM pg_stat_statements ORDER BY total_time DESC LIMIT 3;
              query              | calls |    total_time     |  rows
---------------------------------+-------+-------------------+--------
 select oid,typname from pg_type |   390 | 0.571087000000001 | 321750
 select oid,typname from pg_type |   390 | 0.411590000000001 | 321750
 select oid,typname from pg_type |   192 |          0.388943 | 162624

で、導入完了