2012-10-01 68 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/ 

重新加載配置。

相關問題