我想记录每天运行的查询的执行时间。
例如,像这样:
2012-10-01 13:23:38 STATEMENT: SELECT * FROM pg_stat_database runtime:265 ms.
请给我一些指导方针。
我想记录每天运行的查询的执行时间。
例如,像这样:
2012-10-01 13:23:38 STATEMENT: SELECT * FROM pg_stat_database runtime:265 ms.
请给我一些指导方针。
log_min_duration_statement = 0
log_statement = all
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
有关详细信息,请参见手册:
如果您想要每天的列表,可能需要配置日志文件以每天旋转。同样,这也在手册中有描述。
我相信OP实际上是在询问执行持续时间,而不是时间戳。
要在日志输出中包含持续时间,请打开pgsql/<version>/data/postgresql.conf
,找到以下行:
#log_duration = off
并将其更改为
log_duration = on
如果找不到给定的参数,在文件中添加一个新行。
保存更改后,重新启动postgresql服务或者调用
pg_ctl reload -D <path to the directory of postgresql.conf>
e.g.
pg_ctl reload -D /var/lib/pgsql/9.2/data/
我认为更好的选择是通过启用PG统计扩展来启用pg_stat_statements
。这将帮助您在视图中找到每个查询的查询执行时间,记录得非常清晰。