我正在运行一个日志(log_min_duration_statement = 200
)来分析PostgreSQL 9.0中的一些慢查询,但是没有记录最差查询的语句。有什么方法可以找出查询实际上是什么吗?
(为了简洁和隐私,某些值已替换为***
。)
2012-06-29 02:10:39 UTC LOG: duration: 266.658 ms statement: SELECT *** FROM "oauth_accesstoken" WHERE "oauth_accesstoken"."token" = E'***'
2012-06-29 02:10:40 UTC LOG: duration: 1797.400 ms statement:
2012-06-29 02:10:49 UTC LOG: duration: 1670.132 ms statement:
2012-06-29 02:10:50 UTC LOG: duration: 354.336 ms statement: SELECT *** FROM ***
...
答案 0 :(得分:1)
postgresql.conf
中有一些日志文件目标选项,如下所示。我建议使用csvlog
。
log_destination = 'csvlog'
logging_collector = on
log_directory = '/var/applog/pg_log/1922/'
log_rotation_age = 1d
log_rotation_size = 10MB
log_statement = 'ddl' # none, ddl, mod, all
log_min_duration_statement = 200
进行任何更改后,您需要重新加载postgresql.conf
文件。
答案 1 :(得分:0)
事实证明,因为我一直关注tail -f path | grep 'duration .+ ms'
的日志。任何以换行符开头的语句都不可见。我主要是为了突出显示持续时间字符串。