You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Postgres自定义日志格式或csvlog中获取查询执行时长?

PostgreSQL查询执行时长日志配置方案

自定义文本日志时长获取方式

PostgreSQL的log_line_prefix参数从12版本开始支持%e占位符,对应语句执行时长,单位为毫秒,你可以直接把该占位符加入自定义日志格式即可。

如果你的数据库版本低于12,不需要修改日志格式占位符,只需要开启log_duration = on参数,每条执行的语句后会自动追加duration: xxx ms的时长记录;如果只需要记录超过指定耗时的慢查询,关闭log_duration后设置log_min_duration_statement = 你要的阈值(单位毫秒)即可,超过阈值的语句会自动输出时长信息。

csvlog格式的时长字段说明

csvlog的固定输出字段中包含专门的duration列,存储毫秒级的语句执行时长,默认位于csv日志的第13位(从左到右计数)。只要你开启了log_duration或者设置了log_min_duration_statement大于等于0,该列就会自动写入对应语句的执行时长数值。

常用配置示例

# 开启日志收集
logging_collector = on
# 自定义日志格式示例(12及以上版本可用%e占位符)
log_line_prefix = '%t [%p] user=%u db=%d duration=%ems: '
# 记录所有执行超过100ms的语句及时长,不需要全量日志可调整阈值
log_min_duration_statement = 100
# 如果要输出csvlog,添加以下配置
log_destination = 'csvlog'
log_directory = 'pg_log'
log_rotation_age = 1d

修改postgresql.conf完成对应配置后,执行pg_ctl reload命令重载配置即可生效,不需要重启数据库实例。


内容的提问来源于stack exchange,提问作者negimaster

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 13:24:02