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

如何查看PostgreSQL指定模式下的pg_stat_statements统计数据?

解决多租户PostgreSQL中切换模式后无法访问pg_stat_statements的问题

问题核心原因是:pg_stat_statements扩展默认安装在public模式下,当你修改search_path切换到其他模式后,PostgreSQL不会自动搜索public模式下的对象,因此找不到该表。

以下是几种可行的解决方法:

  • 方法一:查询时指定public模式前缀
    直接在表名前显式加上public.前缀,不受当前search_path影响:
SELECT substring(query, 1, 130) AS query,
      calls,
      round(total_exec_time::numeric, 2) AS total_time,
      round(mean_exec_time::numeric, 2) AS mean_time,
      round((100 * total_exec_time / sum(total_exec_time) OVER ())::numeric, 2) AS percentage
FROM public.pg_stat_statements
ORDER BY mean_exec_time DESC
LIMIT 10;
  • 方法二:修改search_path包含public模式
    切换模式时将public加入search_path,让PostgreSQL自动搜索该模式下的对象:
SET search_path=schema_name, public;

如果需要永久生效,可修改当前用户的默认search_path:

ALTER ROLE your_username SET search_path=schema_name, public;

或修改数据库级别的默认设置:

ALTER DATABASE prod SET search_path=schema_name, public;

注意:修改后需重新连接会话才能生效。

  • 方法三:迁移pg_stat_statements到目标模式(不推荐)
    pg_stat_statements属于系统类扩展,迁移可能引发兼容性问题,仅在特殊需求下使用:
  1. 先卸载扩展(会丢失现有统计数据):
DROP EXTENSION pg_stat_statements;
  1. 在目标模式下重新安装:
SET search_path=schema_name;
CREATE EXTENSION pg_stat_statements;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 18:48:38