使用索引建議工具

本頁說明 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. 前往 Trusted Cloud 控制台的「Cloud SQL Instances」頁面。

    前往 Cloud SQL 執行個體

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

查看查詢的最佳化建議

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

  1. 前往 Trusted 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. 前往 Trusted 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. 前往 Trusted 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 標記,在特定日期/時間執行臨時分析。詳情請參閱「索引建議工具標記」。

後續步驟