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

PostgreSQL是否有类似SQL Server Profiler的工具追踪业务功能关联表?

PostgreSQL中替代SQL Server Profiler的追踪方案

针对你需要识别ERP业务功能对应的插入/更新数据表的需求,PostgreSQL有几个实用工具可以替代SQL Server Profiler的功能,下面是具体方案:

1. 内置扩展pg_stat_statements(最常用)

这是PostgreSQL官方内置的统计扩展,能记录所有执行过的SQL语句及其统计信息,步骤如下:

  • 开启扩展:先修改postgresql.conf,在shared_preload_libraries中添加pg_stat_statements,重启数据库后执行:
    CREATE EXTENSION pg_stat_statements;
    
  • 追踪业务操作:启动追踪前可重置统计数据(可选):
    SELECT pg_stat_statements_reset();
    
    执行目标业务功能后,查询视图筛选写操作:
    SELECT query, calls, rows
    FROM pg_stat_statements
    WHERE query ~* 'INSERT INTO|UPDATE'
    ORDER BY calls DESC;
    
    从返回的query字段中能提取涉及的数据表,还能看到语句执行次数、影响行数等信息。
  • 精准追踪会话:若要排除其他会话干扰,可结合pg_stat_activity找到目标会话的pid再过滤:
    SELECT pss.query, pss.calls
    FROM pg_stat_statements pss
    JOIN pg_stat_activity psa ON pss.pid = psa.pid
    WHERE psa.pid = '你的会话PID'
      AND pss.query ~* 'INSERT INTO|UPDATE';
    

2. pgAudit审计扩展(精细追踪)

适合需要详细审计日志的场景,能精准记录所有写操作:

  • 开启扩展:修改postgresql.conf,在shared_preload_libraries添加pgaudit,并设置:
    pgaudit.log = 'write'  # 仅记录INSERT/UPDATE/DELETE/TRUNCATE等写操作
    
    重启数据库后执行:
    CREATE EXTENSION pgaudit;
    
  • 查看审计日志:执行业务功能后,直接查看PostgreSQL的日志文件(默认路径一般为/var/log/postgresql/或数据库数据目录下的pg_log),日志中包含操作类型、涉及的表、执行用户、时间等详细信息,可轻松定位目标表。

3. pgAdmin可视化追踪(易用型)

如果你习惯可视化操作,pgAdmin提供了类似Profiler的功能:

  • 打开pgAdmin并连接目标数据库,点击顶部菜单栏的Tools -> Profiler;
  • 启动Profiler后执行目标业务功能,完成后停止追踪;
  • 在Profiler结果面板中,筛选INSERT/UPDATE类型的语句,即可直接看到对应的操作表。

4. 临时日志追踪(快速验证)

如果只是临时需求,无需安装扩展,可直接修改日志配置:

  • 临时修改postgresql.conf:
    log_statement = 'modify'  # 记录所有修改数据的语句
    log_min_duration_statement = 0  # 记录所有语句(不忽略慢查询)
    
  • 执行SELECT pg_reload_conf();动态加载配置,无需重启;
  • 执行业务功能后,查看数据库日志文件,从中提取所有写操作涉及的表;
  • 注意:测试完成后记得恢复原有配置,避免日志量过大影响性能。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 17:45:12