我想记录一天中运行的每个查询执行时间.
比如这样,
2012-10-01 13:23:38 STATEMENT: SELECT * FROM pg_stat_database runtime:265 ms.
Run Code Online (Sandbox Code Playgroud)
请给我一些指导.
a_h*_*ame 28
如果你设置
log_min_duration_statement = 0
log_statement = all
Run Code Online (Sandbox Code Playgroud)
在postgresql.conf中,您将看到所有语句都被记录到Postgres日志文件中.
如果启用
log_duration
Run Code Online (Sandbox Code Playgroud)
这也将打印每个声明所用的时间.这是默认关闭.
使用该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
Run Code Online (Sandbox Code Playgroud)
并将其更改为
log_duration = on
Run Code Online (Sandbox Code Playgroud)
如果找不到给定的参数,只需将其添加到文件中的新行中即可。
保存更改后,重新启动 postgresql 服务,或者只是调用
pg_ctl reload -D <path to the directory of postgresql.conf>
Run Code Online (Sandbox Code Playgroud)
例如
pg_ctl reload -D /var/lib/pgsql/9.2/data/
Run Code Online (Sandbox Code Playgroud)
重新加载配置。
| 归档时间: |
|
| 查看次数: |
15442 次 |
| 最近记录: |