配置方法

修改 postgresql.conf 文件:

logging_collector = on
log_directory = 'pg_log'
log_filename = 'postgresql-%Y-%m-%d.log'
log_min_duration_statement = 2000  # 单位:毫秒(2 秒)
log_checkpoints = on
log_lock_waits = on
  • 参数说明
    • log_min_duration_statement:记录执行时间超过该值的 SQL。
    • logging_collector:必须启用以记录日志。

重新加载配置

pg_ctl reload -D /path/to/data/directory
# 或 SQL 命令
SELECT pg_reload_conf();

查看慢查询

日志文件默认位于 pg_log 目录,可通过 log_filename 定义的路径查找。

性能影响

  • 日志记录由后台进程完成,通常影响可忽略。
  • 高并发场景下,频繁记录长 SQL 可能增加 I/O 负载。

建议

  • 设置合理的阈值(如 long_query_time=2)。
  • 日志文件使用 SSD 存储。
  • 定期归档或清理历史日志。