使用索引建議工具

本頁說明 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 Instances」頁面。

    前往 Cloud SQL 執行個體

  2. 如要開啟執行個體的「總覽」頁面,請按一下執行個體名稱。
  3. 按一下「查詢洞察」
  4. 索引顧問建議會顯示在「熱門查詢和標記」部分的「建議」欄中。
  5. 選用:如要只查看有 CREATE INDEX 建議的查詢,請新增「建議:建立索引」篩選條件。

查看查詢建議

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

  1. 前往 Google Cloud 控制台的「Cloud SQL Instances」頁面。

    前往 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 Instances」頁面。

    前往 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 Instances」頁面。

    前往 Cloud SQL 執行個體

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

設定索引建議工具

雖然索引建議工具的預設設定適用於大多數用途,但您可以設定各種資料庫標記,微調工具的行為。

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

後續步驟