使用索引建議工具

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

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

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

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

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

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

限制

PostgreSQL 適用的 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

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

啟用索引建議工具建議

如要啟用索引建議工具,請按照下列步驟操作:

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

    前往 Cloud SQL 執行個體

  2. 如要開啟執行個體的「總覽」頁面,請按一下執行個體名稱。。
  3. 在「設定」資訊方塊中,按一下「編輯設定」
  4. 在「自訂執行個體」專區中,展開「查詢洞察資料」
  5. 確認已啟用「啟用查詢洞察」
  6. 如果尚未選取,請選取「啟用 Enterprise Plus 功能」
  7. 選取「啟用索引建議工具」
  8. 按一下 [儲存]

停用索引建議工具建議

如要停用索引建議工具,請按照下列步驟操作:

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

    前往 Cloud SQL 執行個體

  2. 如要開啟執行個體的「總覽」頁面,請按一下執行個體名稱。
  3. 在「設定」資訊方塊中,按一下「編輯設定」
  4. 在「自訂執行個體」專區中,展開「查詢洞察資料」
  5. 取消勾選「Enable index advisor」(啟用索引建議工具) 核取方塊。
  6. 按一下 [儲存]

查看索引建議工具的建議

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. 如要取得查詢的建議詳細資料,請採取下列任一做法:
    • 點選查詢即可進一步瞭解所選查詢的最佳化建議,包括下列資訊:
      • 效能影響 (高、中和低):建立所有建議索引後的預估查詢速度。
      • 最佳化建議:建立索引最佳化建議。
      • 受影響的資料表:建立索引時,受影響的資料表數量。
      • 預估所需額外儲存空間:建立所有建議索引所需的預估儲存空間大小。
      • 受影響的查詢數量:工作負載中受索引最佳化建議影響的查詢總數。索引可為多項查詢帶來好處。
    • 按一下特定查詢的「建立索引」,即可瞭解建立索引的詳細建議,以提高查詢效能。

以資料庫表格檢視建議

您可以透過下列位於各個資料庫中的表格檢視,查看結果:

  • 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;

手動要求索引分析

您可以要求 Cloud SQL for PostgreSQL 立即執行分析並顯示報告,而無須等待索引顧問下次排定分析作業。針對 PostgreSQL 適用的 Cloud SQL,您必須在啟用索引顧問後,至少等待 15 分鐘,才能執行手動分析。如要執行這項操作,請執行下列 SQL 函式:

SELECT * FROM google_db_advisor_recommend_indexes();

分析完成後,PostgreSQL 適用的 Cloud SQL 會以表格格式顯示報告,其中包含任何建議索引的說明和預估儲存空間需求。如果分析未找到可推薦的新索引,則檢視畫面不會包含任何列。

請注意,執行此指令的使用者角色會影響顯示的建議。PostgreSQL 適用的 Cloud SQL 會根據目前資料庫使用者發出的查詢,限制顯示索引建議。

建立建議的索引

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

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

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

    前往 Cloud SQL 執行個體

  2. 如要開啟執行個體的「總覽」頁面,請按一下執行個體名稱。
  3. 按一下「查詢深入分析資料」
  4. 在「各資料庫負載的最大維度」表格中,按一下「查詢」
  5. 按一下特定查詢的「建立索引」
  6. 按一下「複製所有索引指令」。系統會將 CREATE INDEX 指令複製到剪貼簿。
  7. 透過指令列連線至主要執行個體。
  8. 如要建立建議的索引,請執行複製到剪貼簿的指令,例如:

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

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 查詢:

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

查看受影響的查詢

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

    前往 Cloud SQL 執行個體

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

查看索引建議工具追蹤的查詢

google_db_advisor_workload_statements 檢視畫面會列出索引顧問追蹤的所有查詢,以及每個查詢的重要中繼資料,例如下列指標:

  • 執行個體執行每個查詢的次數
  • 執行個體處理這些查詢所花費的總時間
  • 執行這些查詢的資料庫使用者 ID

清除索引建議工具追蹤的查詢

您可以清除追蹤的查詢,藉此重設索引顧問在執行個體上的行為。如要執行這項操作,請執行下列 SQL 函式:

SELECT google_db_advisor_reset();

PostgreSQL 適用的 Cloud SQL 會立即清空索引顧問的追蹤查詢集合。

後續步驟