2012-10-01 65 views

回答

21

如果您在postgresql.conf中设置,

log_min_duration_statement = 0 
log_statement = all 

,然后你会看到被记录到Postgres日志文件的所有语句。

如果启用

log_duration 

,也将打印对各语句的时间。这是默认关闭的。

使用log_statement参数可以控制语句要记录(DDL,DML,...)

这将在日志文件中产生这样的输出,类型:

 
2012-10-01 13:00:43 CEST postgres LOG: statement: select count(*) from pg_class; 
2012-10-01 13:00:43 CEST postgres LOG: duration: 47.000 ms 

在手册中的更多细节:

如果您想要每日列表,您可能需要配置日志文件以便每天进行轮换。再次在手册中对此进行了描述。

+0

谢谢!为指导Mr.a_horse_with_no_name, 但只有查询是日志当我在postgresql.conf中更改,我真正想要的是查询和相关的执行时间。 – 9ine

+0

@ 9ine:你的意思是“只有查询是日志”?这就是你要求的:记录查询。 –

+0

我的意思是查询和相关的执行时间。 – 9ine

2

我相信OP实际上是要求执行持续时间,而不是时间戳。

要在日志输出的持续时间,开pgsql/<version>/data/postgresql.conf,发现读取

#log_duration = off 

行并将其更改为

log_duration = on 

如果无法找到给定的参数,只将其添加到文件的新行中。

保存更改后,重新启动PostgreSQL服务,或只调用

pg_ctl reload -D <path to the directory of postgresql.conf> 

例如

pg_ctl reload -D /var/lib/pgsql/9.2/data/ 

重新加载配置。

相关问题