首页 > 解决方案 > Google Cloud SQL PostrgreSQL 上的 pg_stat_statements_reset() 权限被拒绝

问题描述

主要问题

SELECT pg_stat_statements_reset();由于权限不足,我无法执行该函数来分析查询优化中的更改。错误消息如下: permission denied for function pg_stat_statements_reset

我想知道是否有其他方法可以重置 Cloud SQL PostgreSQL 上的 pg_stats?

环境

尝试的步骤

我在这个主题上找到了一个先前的答案,它建议pg_stat_statements_reset()应该从通过云控制台创建的默认 postgres 用户工作。但是,列出的解决方案不起作用,它返回相同的权限被拒绝错误

相关问题

标签: postgresqlgoogle-cloud-sql

解决方案


Google Cloud SQL 支持PostgreSQL 的多个模块来扩展其功能。

扩展(模块)之一是:pg_stat_statements。它允许跟踪服务器执行的 SQL 语句的执行统计信息。使用 pg_stat_statements_reset() 来重置统计信息。

在使用扩展(模块)之前,必须安装它:

  1. 使用默认用户从 Cloud Shell连接到 PostgreSQL 实例:postgres
gcloud sql connect [INSTANCE_ID] --user=postgres
  1. 连接到数据库时,创建扩展 pg_stat_statements
CREATE EXTENSION pg_stat_statements
  1. 执行重置统计信息的功能。默认情况下,它只能由超级用户执行
SELECT pg_stat_statements_reset()
  1. (可选)授予其他用户重置统计信息的权限:
GRANT EXECUTE ON FUNCTION pg_stat_statements_reset() TO xuser;

推荐阅读