重庆思庄Oracle、Redhat认证学习论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 60|回复: 0
打印 上一主题 下一主题

PG如何开启慢查询记录?

[复制链接]
跳转到指定楼层
楼主
发表于 2024-8-16 14:44:13 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
在 PostgreSQL 中,可以通过启用慢查询日志功能来记录执行时间较长的 SQL 语句。以下是配置和使用的步骤:

1. 启用慢查询日志需要在 PostgreSQL 配置文件 (postgresql.conf) 中设置相关参数:
  • log_min_duration_statement: 该参数控制记录执行时间超过指定毫秒数的所有 SQL 语句。设置为 0 则记录所有查询,设置为 -1 则禁用记录。
例如,设置为记录所有执行时间超过 1 秒(1000 毫秒)的查询:


log_min_duration_statement = 1000  # 单位为毫秒



  • log_statement: 控制记录哪些 SQL 语句。可选值包括 none、ddl、mod、all。如果只需要记录慢查询,通常不需要修改这个参数。

2. 日志输出格式可以配置 log_line_prefix 来包含更多有用的信息,比如时间戳、用户、数据库等。常见的配置如下:


log_line_prefix = '%m [%p] %d %u %a %h '



  • %m: 时间戳
  • %p: 进程 ID
  • %d: 数据库名
  • %u: 用户名
  • %a: 应用程序名
  • %h: 客户端主机名或 IP 地址

3. 示例日志输出假设你启用了慢查询日志,并且设置了 log_min_duration_statement = 1000,那么当有查询执行时间超过 1 秒时,日志会显示类似如下的信息:

2024-08-16 14:45:30.123 [12345] mydb myuser psql 192.168.1.1 LOG:  duration: 1500 ms  statement: SELECT * FROM my_table WHERE id = 1;



这里可以看到查询的执行时间(duration: 1500 ms)以及实际的 SQL 语句。

4. 调整日志策略为了更好地分析和优化查询,你可以考虑:
  • 使用 auto_explain 扩展:它可以记录慢查询的执行计划,帮助更好地诊断性能问题。
  • 分析日志文件:可以使用工具如 pgBadger 分析 PostgreSQL 的日志,生成详细的报告,包括慢查询、锁等待等信息。

5. 重载配置修改配置后,需要重载配置文件使其生效:


SELECT pg_reload_conf();



通过上述配置和管理,你可以有效地记录和分析 PostgreSQL 中的慢查询,从而进行性能优化。

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 支持支持 反对反对
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|手机版|小黑屋|重庆思庄Oracle、Redhat认证学习论坛 ( 渝ICP备12004239号-4 )

GMT+8, 2024-9-20 04:30 , Processed in 0.135082 second(s), 20 queries .

重庆思庄学习中心论坛-重庆思庄科技有限公司论坛

© 2001-2020

快速回复 返回顶部 返回列表