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
相关产品推荐
相关产品推荐

