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

PostgreSQL中pg_stat_statements仅显示当前用户记录,如何查看所有用户查询?

解决pg_stat_statements仅显示当前用户记录的问题

1. 确认超级用户身份与视图权限

确保你使用的是真正的超级用户(如默认的postgres用户)执行查询,然后检查pg_stat_statements视图的权限:

SELECT grantee, privilege_type 
FROM information_schema.table_privileges 
WHERE table_name = 'pg_stat_statements';

如果超级用户没有SELECT权限,执行授权:

GRANT SELECT ON pg_stat_statements TO postgres; -- 替换为你的超级用户账号

2. 验证pg_stat_statements扩展加载状态

TimescaleDB环境下可能存在扩展加载异常,执行以下命令确认扩展正常生效:

SELECT * FROM pg_extension WHERE extname = 'pg_stat_statements';

如果未找到记录,重新创建扩展:

CREATE EXTENSION IF NOT EXISTS pg_stat_statements;

之后重启PostgreSQL服务确保扩展加载完全。

3. 直接调用底层函数获取全量记录

如果视图权限仍有问题,可以绕过视图直接调用底层函数,该函数默认仅对超级用户开放,返回所有用户的查询记录:

SELECT * FROM pg_stat_statements();

4. 检查相关配置参数

虽然你已确认pg_stat_statements.track = all,但可以额外检查track_utility参数(确保工具类语句也被跟踪):

SHOW pg_stat_statements.track_utility;

若返回off,执行以下命令开启并重载配置:

ALTER SYSTEM SET pg_stat_statements.track_utility = on;
SELECT pg_reload_conf();

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 06:41:30