AlloyDB for PostgreSQL 提供索引建議工具,可追蹤資料庫定期處理的查詢。並定期分析這些查詢,建議可提升查詢效能的新索引。
您可以透過下列方式,使用索引建議工具的建議:
如要進一步瞭解索引建議工具的運作方式,請參閱「索引建議工具總覽」。
事前準備
使用索引建議工具前,請確認您符合下列需求。
啟用必要擴充功能
前往 Google Cloud 控制台的「Clusters」(叢集) 頁面。
在「Resource Name」(資源名稱) 欄中,按一下叢集。
在「查詢洞察」頁面,點選「編輯查詢設定」。
按一下「啟用索引建議工具」。
查看索引建議工具的建議
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 INDEXDDL 陳述式、查看預估的執行時間改善幅度、點選「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 旗標,讓索引建議工具針對向量查詢提供索引建議。這個旗標預設為啟用。
詳情請參閱「索引建議工具旗標」。