在我们进行数据库性能问题提高时,首先想到的就是索引和一些低效率的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,所以这里就根据需要自己设定一个合适的值吧!