【处理时间】日志输出设置

可以使用postgresql的auto_explain功能来记录日志,这样就可以查看每个SQL的处理时间,以此来判断是否超过了指定的秒数阈值。

将输出示例发送到postgresql.log文件中

Sep 24 11:59:37 dev postgres[12692]: [21-1] LOG:  duration: 0.518 ms  plan:
Sep 24 11:59:37 dev postgres[12692]: [21-2] #011Query Text: UPDATE dtb_session SET sess_data= $1, update_date= CURRENT_TIMESTAMP WHERE sess_id = $2
Sep 24 11:59:37 dev postgres[12692]: [21-3] #011Update on dtb_session  (cost=0.00..6.07 rows=1 width=47)
Sep 24 11:59:37 dev postgres[12692]: [21-4] #011  ->  Seq Scan on dtb_session  (cost=0.00..6.07 rows=1 width=47)
Sep 24 11:59:37 dev postgres[12692]: [21-5] #011        Filter: (sess_id = $2)

需要编译postgresql模块才能完成设置。
以下是设置步骤。
请根据需要自行更改版本。

$ cd /usr/local/src
$ tar zxvf postgresql-9.1.9.tar.gz
$ cd postgresql-9.1.9
$ cp -i ../config.nice-postgresql-9.1.9 .
$ ./config.nice-postgresql-9.1.9
$ make

※ 不要运行 make install!

$ cd contrib/auto_explain
$ make
$ make install

这边要执行make install。

追加postgresql.conf配置

$ vi /var/lib/pgsql/data/postgresql.conf

所以,下面的行被注释掉了。

#shared_preload_libraries = ''             # (change requires restart)
shared_preload_libraries = ‘auto_explain'  # (change requires restart)
#custom_variable_classes = ''              # list of custom variable class names
custom_variable_classes = 'auto_explain'   # list of custom variable class names

重启PostgreSQL。

$ /etc/init.d/pgsql restart
广告
将在 10 秒后关闭
bannerAds