使用索引顾问

AlloyDB for PostgreSQL 提供索引顾问,用于定期跟踪您的数据库处理的查询。它会定期分析这些查询,以建议可提高查询性能的新索引。

您可以将其建议作为表格来查看和查询,也可以随时请求按需分析和报告。

查看索引顾问的建议

AlloyDB 会定期自动运行索引顾问的分析。您可以通过每个数据库中的两个表视图来读取其结果:

  • google_db_advisor_recommended_indexes 会列出适用于其数据库的任何建议的新索引。它还包含每个索引所需的存储空间估算值,以及每个索引可能影响的查询数量。

  • google_db_advisor_workload_report 列出顾问为其建议一个或多个新索引的每个查询。每行会汇总适用于相关查询的建议。

例如,如需查看最新索引建议分析的结果(格式设置为表),请运行以下查询:

SELECT * FROM google_db_advisor_recommended_indexes;

如果索引顾问的最新分析未找到建议,则此查询会返回不包含行的表。

由于所有这些报告都作为普通数据库视图存在,因此您可以编写查询,以任何方式过滤或显示信息。例如,如需查看将建议索引与其完整关联查询配对的报告,请针对其各自的 query_id 列联接 google_db_advisor_workload_reportgoogle_db_advisor_workload_statements 视图:

SELECT DISTINCT recommended_indexes, query
FROM google_db_advisor_workload_report r, google_db_advisor_workload_statements s
WHERE r.query_id = s.query_id;

手动请求索引分析

您可以请求 AlloyDB 立即运行分析并显示其报告,而不是等待索引顾问的下一次计划分析。为此,请运行以下 SQL 函数:

SELECT * FROM google_db_advisor_recommend_indexes();

分析完成后,AlloyDB 会显示表格式的报告,其中包含任何建议索引的说明和预估存储空间需求。如果分析未找到要建议的新索引,则视图不包含任何行。

请注意,运行此命令的 PostgreSQL 用户角色可能会影响显示的建议。如果此查询由 postgres 或其他具有 alloydbsuperuser 角色的用户运行,则 AlloyDB 会显示索引顾问的所有当前建议。否则,AlloyDB 会将其显示限制为基于当前数据库用户发出的查询的索引建议。

应用索引顾问的建议

google_db_advisor_recommended_indexes 视图的 index 列在每一行中都包含一个完整的 PostgreSQL CREATE INDEX DDL 语句,用于生成该行中建议的索引。

如需应用该行的建议,请完全按照所示运行该 DDL 语句。这包括将其复制到剪贴板并将其粘贴到 psql 提示符中。

例如,请考虑使用上一部分中介绍的查询手动运行分析所得到的以下输出:

                    index                   | estimated_storage_size_in_mb
--------------------------------------------+------------------------------
 CREATE INDEX ON "School"."Students"("age") |                            3
(1 row)

此报告包含单个建议:在 School 架构的 Students 表中的 age 列上添加新的单列索引。如需应用此建议,请输入与报告中显示的 DDL 查询完全相同的 DDL 查询:

CREATE INDEX ON "School"."Students"("age");

查看索引顾问跟踪的查询

google_db_advisor_workload_statements 视图包含索引顾问跟踪的所有查询的列表以及每个查询的重要元数据,例如以下指标:

  • 实例执行此查询的次数
  • 实例处理这些查询所用的总时间
  • 运行这些查询的数据库用户的 ID

清除索引顾问跟踪的查询

您可以通过清除跟踪的查询来重置实例上的索引顾问行为。为此,请运行以下 SQL 函数:

SELECT google_db_advisor_reset();

AlloyDB 会立即清空索引顾问的跟踪查询集合。

配置索引顾问

虽然索引顾问旨在借助其默认设置来适用于大多数应用场景,不过您可以通过设置各种数据库标志来微调其行为。如需了解详情,请参阅索引顾问标志参考页面。