centos postgresql9.1 pg_stat_statementsを導入
SQLログの出力
log_statement = 'none' # none, ddl, mod, all
none : 出力しない(デフォルト)
ddl : DDLを出力
mod : DDLとDML
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
で、導入完了