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

Azure PostgreSQL单服务器如何获取特定时间段的数据库查询列表?

解决方案:获取Azure PostgreSQL单服务器的历史查询日志

1. 开启PostgreSQL核心日志参数

Azure PostgreSQL单服务器默认不会记录所有查询,需要手动调整日志参数:

  • 登录Azure门户,进入你的PostgreSQL单服务器,找到服务器参数页面
  • 搜索并修改以下参数:
    • log_statement:设为all会记录所有SQL语句(包括SELECT、INSERT等);如果只需要修改类语句,可设为mod(对应INSERT/UPDATE/DELETE等)
    • log_min_duration_statement:设为0会记录所有耗时的查询(哪怕是毫秒级);如果只想追踪慢查询,可设为具体毫秒值(比如100)
  • 修改后点击保存,等待参数生效(通常需要几分钟)

2. 配置诊断设置导出日志到可查询目标

仅开启日志参数还不够,需要把日志导出到Log Analytics或存储账户才能查询历史数据:

  • 在Azure门户的服务器页面,进入诊断设置,点击添加诊断设置
  • 填写设置名称,勾选PostgreSQLLogs类别,选择目标存储(推荐选Log Analytics工作区,方便用KQL查询)
  • 保存设置后,等待10-15分钟让日志开始流入目标存储

用Log Analytics查询指定时间段的数据库查询

进入对应的Log Analytics工作区,使用KQL语句筛选:

AzureDiagnostics
| where ResourceProvider == "MICROSOFT.DBFORPOSTGRESQL"
| where Category == "PostgreSQLLogs"
| where LogicalServerName_s == "你的服务器名称"
| where DatabaseName_s == "目标数据库名"
| where TimeGenerated between (datetime(YYYY-MM-DDTHH:MM:SS) .. datetime(YYYY-MM-DDTHH:MM:SS))
| parse Message with * "statement: " query_s *
| project TimeGenerated, DatabaseName_s, query_s

替换其中的服务器名、数据库名和时间范围即可得到目标查询列表。

3. 用pg_stat_statements扩展获取查询统计(适合高频查询分析)

如果需要查看历史执行过的查询的统计信息(调用次数、耗时等),可以启用这个官方扩展:

  1. 先在Azure门户的服务器参数里,把shared_preload_libraries添加pg_stat_statements,保存后重启服务器
  2. 登录目标数据库,执行创建扩展的SQL:
    CREATE EXTENSION pg_stat_statements;
    
  3. 查询历史查询(可按数据库和时间过滤):
    SELECT query, calls, total_time, min_time, max_time, query_start
    FROM pg_stat_statements
    WHERE datname = '目标数据库名'
      AND query_start >= now() - interval '24 hours'; -- 调整时间范围
    

注意:这个扩展的记录会在服务器重启后重置,若需长期保存,还是要结合诊断日志。

4. 验证配置有效性

执行几条测试SQL(比如SELECT * FROM your_table LIMIT 1;),然后去Log Analytics或存储账户查看是否有对应的日志记录,确认配置生效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 12:35:22