在PostgreSQL 8.X,9.X中如何找到慢查询?

2013.08.29

在我们进行数据库性能问题提高时,首先想到的就是索引和一些低效率的SQL查询。而那些性能低下的SQL查询有的时候因为一个单词,甚至能让性能提高十倍。所以,能找到这些慢查询,是个至关重要的点。这个其实很容易,只需打开PostgreSQL数据库日志,就可以看到那些慢查询了。该方法在8.3,8.4,9.X都测试过,完全可用!

开启慢查询日志

用你喜欢的编辑器打开 postgresql.conf 这个文件(命令行下就vi吧)如果你不知道这个文件在哪里,可以使用这个命令来查找:find / -name postgresql.conf

找到这一行

# log_min_duration_statement = -1

修改为

log_min_duration_statement = 100

保存这个文件,然后重新载入PostgreSQL的配置(不用担心这个操作会中断服务程序,这个操作是无痛的: )

service postgresql reload

去打开你的 pg_log 目录下的日志文件吧! (例如 /var/lib/pgsql/data/pg_log/)

当然,你这里设置的是超过100毫秒的执行都会被记录的。或许时间有点短,毕竟一些联合查询、保护子查询的查询等等有时候会不止100ms,所以这里就根据需要自己设定一个合适的值吧!

Comments
Write a Comment