使用索引顾问

本页面介绍 Cloud SQL for MySQL 索引顾问,以及如何查看和应用其索引建议。

Cloud SQL for MySQL 提供全托管式索引顾问,用于定期跟踪您的数据库处理的查询。索引顾问会定期分析这些查询,以建议可提高查询性能的新索引。借助索引顾问,您可以检测并修复系统和查询的性能问题。

索引顾问如何运作?

索引顾问通过执行以下操作来帮助您改善查询处理:

  • 通过用于创建索引的 SQL 命令推荐一组索引。
  • 提供数据以帮助您评估建议索引,例如,估算存储空间大小以及索引对查询的影响。
索引顾问会存储并显示 CREATE INDEX 命令,其中包含数据库名称、表名称和列名称。跟踪的查询是已移除所有字面量的所有规范化查询。

索引建议采用静态加密。

在 Cloud SQL for MySQL 中,您可以使用数据库标志配置和调整索引建议。如需了解详情,请参阅索引顾问标志

限制

Cloud SQL for MySQL 索引顾问具有以下限制:

  • 索引顾问仅提供 CREATE INDEX 建议。
  • 索引顾问不支持具有以下配置的实例:
    • Cloud SQL 企业版实例
    • 使用共享核心机器类型的实例

准备工作

如需获取索引顾问建议,您必须使用 Cloud SQL 企业 Plus 版,并为 Cloud SQL 实例启用 Cloud SQL 企业 Plus 版 Query Insights

所需的角色和权限

如需获得获取索引顾问建议所需的权限,请让您的管理员为您授予托管 Cloud SQL 实例的项目的 Cloud SQL Viewer (roles/cloudsql.viewer) IAM 角色。 如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限

此预定义角色包含获取索引顾问建议所需的权限。如需查看所需的确切权限,请展开所需权限部分:

所需权限

如需获取索引顾问建议,您需要拥有以下权限:

  • databaseinsights.recommendations.query
  • databaseinsights.resourceRecommendations.query

您也可以使用自定义角色或其他预定义角色来获取这些权限。

启用索引顾问建议

启用 Cloud SQL 企业 Plus 版 Query Insights 后,系统会自动启用索引顾问建议。

停用索引顾问建议

您无法在不停用 Cloud SQL 企业 Plus 版 Query Insights 的情况下停用索引顾问建议。

如需停用索引顾问建议和 Cloud SQL 企业 Plus 版 Query Insights,请参阅停用 Cloud SQL 企业 Plus 版 Query Insights

查看索引顾问建议

Cloud SQL 会定期自动运行索引顾问分析。如需查看索引顾问建议,请使用 Query Insights 信息中心。 您还可以将索引顾问建议作为表来查看和查询,也可以随时请求按需分析和报告。

在 Query Insights 信息中心内查看和过滤建议

  1. 在 Google Cloud 控制台中,前往 Cloud SQL 实例页面。

    转到“Cloud SQL 实例”

  2. 如需打开实例的概览页面,请点击实例名称。
  3. 点击 Query Insights
  4. 索引顾问建议会显示在热门查询和标记部分的建议列中。
  5. 可选:如需仅查看具有 CREATE INDEX 建议的查询,请为建议:创建索引添加过滤条件。

查看针对查询的建议

如需查看针对特定查询的索引建议,请按照以下步骤操作:

  1. 在 Google Cloud 控制台中,前往 Cloud SQL 实例页面。

    转到“Cloud SQL 实例”

  2. 如需打开实例的概览页面,请点击实例名称。
  3. 点击 Query Insights
  4. 热门查询和标记部分中,点击查询
  5. 如需获取查询的建议详细信息,请执行以下操作之一:
    • 点击某个查询以详细了解针对所选查询的建议,包括以下信息:
      • 性能影响(高、中、低):创建所有建议索引后的估算查询速度。
      • 建议:创建索引建议。
      • 受影响的表:创建索引时将受到影响的表的数量。
      • 所需的额外估算存储空间:创建所有建议索引所需的估算存储空间大小。
      • 受影响的查询数量:工作负载中受索引建议影响的查询总数。一个索引可能使多个查询受益。
    • 针对特定查询点击创建索引以了解有关创建索引以提高查询性能的详细建议。

以数据库表格视图的形式查看建议

您可以通过 mysql 数据库中的以下表来读取其结果:

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

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

SELECT * FROM mysql.cloudsql_db_advisor_recommended_indexes;

创建建议索引

您可以在 Query Insights 信息中心或数据库表格视图中创建建议的索引。

如需使用 Query Insights 信息中心创建建议的索引,请执行以下操作:

  1. 在 Google Cloud 控制台中,前往 Cloud SQL 实例页面。

    转到“Cloud SQL 实例”

  2. 如需打开实例的概览页面,请点击实例名称。
  3. 点击 Query Insights
  4. 主要维度(按数据库负载)表中,点击查询
  5. 针对特定查询点击创建索引
  6. 点击复制所有索引命令。系统会将 CREATE INDEX 命令复制到剪贴板。
  7. 通过命令行连接到主实例。
  8. 如需创建建议索引,请运行复制到剪贴板的命令,例如:

    CREATE INDEX ON "public"."demo_order" ("customer_id");

mysql.cloudsql_db_advisor_recommended_indexes 表的 index 列在每一行中都包含一个完整的 MySQL CREATE INDEX DDL 语句,用于生成该行中建议的索引。

如需应用该行的建议,请完全按照所示运行该 DDL 语句。

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

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

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

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

查看受影响的查询

  1. 在 Google Cloud 控制台中,前往 Cloud SQL 实例页面。

    转到“Cloud SQL 实例”

  2. 如需打开实例的概览页面,请点击实例名称。
  3. 点击 Query Insights
  4. 主要维度(按数据库负载)表中,点击查询
  5. 针对特定查询点击创建索引
  6. 点击显示受影响的查询
  7. 点击某个查询即可详细了解受影响的查询。

配置索引顾问

虽然索引顾问旨在借助其默认设置来适用于大多数应用场景,不过您可以通过设置各种数据库标志来微调其行为。

默认情况下,索引顾问每 24 小时运行一次。您可以使用 cloudsql_index_advisor_auto_advisor_schedule 标志修改自动安排时间,也可以使用 cloudsql_index_advisor_run_at_timestamp 标志在特定日期/时间运行临时分析。如需了解详情,请参阅索引顾问标志

后续步骤