使用索引建議工具

本頁面說明 MySQL 適用的 Cloud SQL 索引顧問,以及如何查看及套用索引建議。

MySQL 適用的 Cloud SQL 提供全代管索引顧問服務,可追蹤資料庫定期處理的查詢。索引建議工具會定期分析這些查詢,並提供可提升查詢效能的新索引建議。索引建議工具可讓您偵測並修正系統和查詢的效能問題。

索引顧問的運作方式為何?

索引建議工具可協助您改善查詢處理作業,方法如下:

  • 使用 SQL 指令推薦一組索引來建立索引。
  • 提供資料,協助您評估建議的索引,例如預估儲存空間大小和索引對查詢的影響。
索引顧問會儲存及顯示包含資料庫名稱、資料表名稱和資料欄名稱的 CREATE INDEX 指令。追蹤的查詢都是經過標準化的查詢,已移除所有文字常值。

索引建議會經過靜態資料加密。

在 MySQL 適用的 Cloud SQL 中,您可以使用資料庫標記設定及調整索引顧問。詳情請參閱「索引顧問標記」。

限制

MySQL 適用的 Cloud SQL 索引顧問有下列限制:

  • 索引建議工具只會提供 CREATE INDEX 建議。
  • 索引顧問不支援下列設定的執行個體:
    • Cloud SQL Enterprise 版執行個體
    • 使用共用核心機器類型的執行個體

事前準備

如要取得索引顧問的建議,您必須使用 Cloud SQL Enterprise Plus 版本,並為 Cloud SQL 執行個體啟用 Cloud SQL Enterprise Plus 版本的查詢洞察

必要角色和權限

如要取得取得索引顧問建議所需的權限,請要求管理員在代管 Cloud SQL 執行個體的專案中,授予您 Cloud SQL 檢視者 (roles/cloudsql.viewer) IAM 角色。如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和機構的存取權」。

這個預先定義的角色包含取得索引顧問建議所需的權限。如要查看確切的必要權限,請展開「必要權限」部分:

所需權限

如要取得索引分析師的最佳化建議,必須具備下列權限:

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

您或許還可透過自訂角色或其他預先定義的角色取得這些權限。

啟用索引建議工具建議

啟用 Cloud SQL Enterprise Plus 版本的查詢深入分析功能,即可自動啟用索引顧問建議。

停用索引建議工具建議

如要停用索引建議工具的建議,必須先停用 Cloud SQL Enterprise Plus 版本的查詢深入分析資料。

如要停用 Cloud SQL Enterprise Plus 版本的索引顧問建議和查詢洞察資料,請參閱「停用 Cloud SQL Enterprise Plus 版本的查詢洞察資料」。

查看索引建議工具的建議

Cloud SQL 會自動定期執行索引顧問分析。如要查看索引建議工具的建議,請使用「查詢洞察」資訊主頁。 您也可以隨時查看及查詢索引顧問建議,並以表格形式呈現,或要求提供隨選分析和報表。

在「查詢洞察」資訊主頁中查看及篩選最佳化建議

  1. 前往 Google Cloud 控制台的「Cloud SQL 執行個體」頁面。

    前往 Cloud SQL 執行個體

  2. 如要開啟執行個體的「總覽」頁面,請按一下執行個體名稱。
  3. 按一下「查詢深入分析資料」
  4. 索引顧問建議會顯示在「熱門查詢和代碼」部分的「建議」欄中。
  5. 選用:如要只查看含有 CREATE INDEX 建議的查詢,請為「建議:建立索引」新增篩選器。

查看查詢的最佳化建議

如要查看特定查詢的索引建議,請按照下列步驟操作:

  1. 前往 Google Cloud 控制台的「Cloud SQL 執行個體」頁面。

    前往 Cloud SQL 執行個體

  2. 如要開啟執行個體的「總覽」頁面,請按一下執行個體名稱。
  3. 按一下「查詢深入分析資料」
  4. 在「熱門查詢和代碼」部分,按一下「查詢」
  5. 如要取得查詢的建議詳細資料,請採取下列任一做法:
    • 點選查詢即可進一步瞭解所選查詢的最佳化建議,包括下列資訊:
      • 效能影響 (高、中和低):建立所有建議索引後的預估查詢速度。
      • 最佳化建議:建立索引最佳化建議。
      • 受影響的資料表:建立索引時,受影響的資料表數量。
      • 預估所需額外儲存空間:建立所有建議索引所需的預估儲存空間大小。
      • 受影響的查詢數量:工作負載中受索引最佳化建議影響的查詢總數。索引可為多項查詢帶來好處。
    • 按一下特定查詢的「建立索引」,即可瞭解建立索引的詳細建議,以提高查詢效能。

以資料庫表格檢視建議

您可以透過 mysql 資料庫中的下列表格讀取結果:

  • mysql.cloudsql_db_advisor_recommended_indexes:列出每個資料庫的建議新索引。這份報告還會預估每個索引所需的儲存空間,以及每個索引可影響的查詢數量。

舉例來說,如要查看以表格格式呈現的最新索引推薦分析結果,請執行以下查詢:

SELECT * FROM mysql.cloudsql_db_advisor_recommended_indexes;

建立建議的索引

您可以透過查詢洞察資訊主頁或資料庫資料表檢視畫面,建立建議的索引。

如要使用「查詢洞察」資訊主頁建立建議的索引,請按照下列步驟操作:

  1. 前往 Google Cloud 控制台的「Cloud SQL 執行個體」頁面。

    前往 Cloud SQL 執行個體

  2. 如要開啟執行個體的「總覽」頁面,請按一下執行個體名稱。
  3. 按一下「查詢深入分析資料」
  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. 按一下「查詢深入分析資料」
  4. 在「各資料庫負載的最大維度」表格中,按一下「查詢」
  5. 按一下特定查詢的「建立索引」
  6. 按一下「顯示受影響的查詢」
  7. 按一下查詢,即可瞭解受影響查詢的詳細資料。

設定索引建議工具

雖然索引顧問工具的預設設定可用於多數用途,但您可以設定各種資料庫標記,進一步調整其行為。

根據預設,索引顧問會每 24 小時執行一次。您可以使用 cloudsql_index_advisor_auto_advisor_schedule 標記修改自動排程時間,也可以使用 cloudsql_index_advisor_run_at_timestamp 標記針對特定日期/時間執行臨時分析。詳情請參閱索引顧問標記

後續步驟