开始

首先,要安装 auto_explain:

进入 contrib/auto_explain 目录,运行 gmake ,然后运行  gmake install

然后编辑 postgresql.conf ,加入如下两行:



shared_preload_libraries = 'auto_explain'
auto_explain.log_min_duration='0'


再在postgresql.conf 中设置log:



# - Where to Log -

log_destination = 'csvlog' # Valid values are combinations of
# stderr, csvlog, syslog, and eventlog,
# depending on platform. csvlog
# requires logging_collector to be on.

# This is used when logging to stderr:
logging_collector = on # Enable capturing of stderr and csvlog
# into log files. Required to be on for
# csvlogs.
# (change requires restart)


验证:

启动 postgresql 以后,运行:



[postgres@localhost bin]$ ./psql
psql (9.2.0)
Type "help" for help.

postgres=# select count(*) from employee;
count
-------
1000
(1 row)

postgres=# \q


查看log:



[postgres@localhost pg_log]$ ll
total 4
-rw------- 1 postgres postgres 768 Nov 8 11:01 postgresql-2012-11-08_110114.csv
-rw------- 1 postgres postgres 0 Nov 8 11:01 postgresql-2012-11-08_110114.log
[postgres@localhost pg_log]$ cat postgresql-2012-11-08_110114.csv |grep "scan"
[postgres@localhost pg_log]$ cat postgresql-2012-11-08_110114.csv
2012-11-08 11:01:14.453 CST,,,7014,,509b207a.1b66,1,,2012-11-08 11:01:14 CST,,0,LOG,00000,"database system was shut down at 2012-11-08 11:00:39 CST",,,,,,,,,""
2012-11-08 11:01:14.459 CST,,,7018,,509b207a.1b6a,1,,2012-11-08 11:01:14 CST,,0,LOG,00000,"autovacuum launcher started",,,,,,,,,""
2012-11-08 11:01:14.460 CST,,,7012,,509b207a.1b64,1,,2012-11-08 11:01:14 CST,,0,LOG,00000,"database system is ready to accept connections",,,,,,,,,""
2012-11-08 11:01:36.950 CST,"postgres","postgres",7022,"[local]",509b2084.1b6e,1,"SELECT",2012-11-08 11:01:24 CST,2/2,0,LOG,00000,"duration: 0.100 ms plan:
Query Text: select count(*) from employee;
Aggregate (cost=19.50..19.51 rows=1 width=0)
-> Seq Scan on employee (cost=0.00..17.00 rows=1000 width=0)",,,,,,,,,"psql"


结束