使用索引建議工具

AlloyDB for PostgreSQL 提供索引建議工具,可追蹤資料庫定期處理的查詢。並定期分析這些查詢,建議可提升查詢效能的新索引。

您可以透過下列方式,使用索引建議工具的建議:

如要進一步瞭解索引建議工具的運作方式,請參閱「索引建議工具總覽」。

事前準備

使用索引建議工具前,請確認您符合下列需求。

啟用必要擴充功能

  1. 前往 Google Cloud 控制台的「Clusters」(叢集) 頁面。

    前往叢集

  2. 在「Resource Name」(資源名稱) 欄中,按一下叢集。

  3. 在「查詢洞察」頁面,點選「編輯查詢設定」。

  4. 按一下「啟用索引建議工具」。

查看索引建議工具的建議

AlloyDB 會定期自動執行索引建議工具的分析。您可以在 Google Cloud 控制台的「Query insights」(查詢洞察) 資訊主頁中查看產生的索引建議,或直接查詢資料庫資料表檢視表。

在查詢洞察中查看建議

AlloyDB 將索引建議工具與Google Cloud 控制台中的查詢洞察和進階查詢洞察整合。

如果索引建議工具發現缺少 B-tree 或 ScaNN 向量搜尋索引,而這些索引可提升查詢效能,查詢洞察 資訊主頁就會在下列檢視畫面中,顯示索引建議工具的建議和提示:

  • 在「查詢洞察」頁面的「依資料庫負載列出的主要維度」部分,選取「查詢」分頁標籤。在資料表中,如果查詢有索引建議工具建議,Recommendations (建議) 欄旁邊會顯示「Create indexes」(建立索引) 連結。您也可以新增「Recommendation: Create indexes」(建議:建立索引) 篩選條件,只查看有索引建議的查詢。

  • 從「查詢」資料表選取查詢,即可開啟「查詢詳細資料」頁面,其中會顯示範例查詢計畫檢視畫面中的「索引建議」資訊卡,以及「建議的索引」資料表。這些檢視畫面會顯示預估效能影響 (高、中或低)、建議的索引類型和目標資料表、預估所需的額外儲存空間、受影響的資料表數量,以及受影響的查詢數量。

  • 點選「Create indexes」(建立索引) (或建議中的「View details」(查看詳細資料)),會開啟「Create indexes to improve query performance」(建立索引來提高查詢效能) 窗格。在這個窗格中,您可以檢查建議的 CREATE INDEX DDL 陳述式、查看預估的執行時間改善幅度、點選「Show impacted queries」(顯示受影響的查詢),檢查所有可受益於建議索引的工作負載查詢,以及複製指令或直接在 AlloyDB Studio 中開啟指令。

如需逐步操作說明,瞭解如何在Google Cloud 控制台設定建議重新整理頻率、篩選建議,以及建立建議索引,請參閱「搭配查詢洞察使用 AlloyDB for PostgreSQL 索引建議工具」和「使用進階查詢洞察功能提高查詢效能」。

使用資料庫檢視畫面查看建議

您也可以透過每個資料庫中的兩個資料表檢視畫面,查看索引建議工具的結果:

  • google_db_advisor_recommended_indexes 會列出資料庫建議的新索引。此外,這份報告也會提供各索引所需的預估儲存空間,以及各索引可能影響的查詢數量。

  • google_db_advisor_workload_report會列出顧問建議建立一或多個新索引的每項查詢。每列會摘要相關查詢的建議。

舉例來說,如要查看最近一次索引建議分析的結果,並以表格格式呈現,請執行下列查詢:

SELECT * FROM google_db_advisor_recommended_indexes;

如果索引建議工具最近一次分析未找到任何建議,這項查詢會傳回沒有資料列的資料表。

由於所有報表都以一般資料庫檢視表的形式存在,因此您可以編寫查詢,以任何方式篩選或呈現資訊。舉例來說,如要查看將建議索引與完整相關查詢配對的報表,請在各自的 query_id 欄上彙整 google_db_advisor_workload_report 和google_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;

手動要求索引分析

您可以要求 AlloyDB 立即執行分析並顯示報表,不必等待索引建議工具的下一次排定分析。如要執行這項操作,請執行下列 SQL 函式:

SELECT * FROM google_db_advisor_recommend_indexes();

分析完成後,AlloyDB 會顯示表格格式的報表,其中包含建議索引的說明和預估儲存空間需求。如果分析結果沒有建議的新索引,檢視表就不會包含任何資料列。

請注意,執行這項指令的 PostgreSQL 使用者角色可能會影響顯示的建議。如果這項查詢是由 postgres 或其他具備 alloydbsuperuser 角色的使用者執行,AlloyDB 就會顯示索引建議工具目前的所有建議。否則,AlloyDB 只會根據目前資料庫使用者發出的查詢,顯示索引建議。

套用索引建議工具的建議

在 Google Cloud 控制台的「查詢洞察」資訊主頁中,您可以點選查詢的「建立索引」,然後點選「複製所有索引指令」 (或「在 Studio 中開啟指令」,在 AlloyDB Studio 中開啟 CREATE INDEX 陳述式),接著在主要執行個體上執行指令。如需逐步說明,請參閱「在查詢洞察中建立建議的索引」。

直接查詢資料庫檢視表時,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");

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

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

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

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

您可以清除追蹤的查詢,重設執行個體的索引建議工具行為。如要執行這項操作,請執行下列 SQL 函式:

SELECT google_db_advisor_reset();

AlloyDB 會立即清空索引建議工具收集的追蹤查詢。

設定索引建議工具

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

舉例來說,您可以設定 google_db_advisor.enable_vector_index_advisor 旗標,讓索引建議工具針對向量查詢提供索引建議。這個旗標預設為啟用。

詳情請參閱「索引建議工具旗標」。

後續步驟