使用索引建議工具

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

您可以將建議視為表格查看及查詢,也可以隨時要求進行隨選分析並產生報表。

事前準備

使用索引建議工具前,請先確認符合下列規定。

啟用必要擴充功能

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

    前往「Clusters」(叢集)

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

  3. 在「查詢洞察」頁面中,按一下「編輯查詢設定」

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

  5. 如要為可擴充的最近鄰 (ScaNN) 索引啟用向量搜尋索引建議,請啟用 scann.enable_preview_features 旗標 (預先發布版)。詳情請參閱「設定執行個體的資料庫旗標」。

查看索引建議工具的建議

AlloyDB 會定期自動執行索引建議分析。您可以透過每個資料庫中的兩個表格檢視畫面,查看實驗結果:

  • google_db_advisor_recommended_indexes 會列出資料庫的任何建議新索引。這份報告也包含每個索引所需的儲存空間預估值,以及每個索引可能影響的查詢數量。

  • google_db_advisor_workload_report會列出顧問建議一或多個新索引的每個查詢。每一列都會彙整相關查詢的建議。

  • google_db_advisor.enable_vector_index_advisor 擴充功能可藉此為向量查詢建議索引。google_db_advisor您也可以使用 scann.enable_preview_features 標記 (位於「預覽」) 啟用這個標記。

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

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;

手動要求進行索引分析

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

SELECT * FROM google_db_advisor_recommend_indexes();

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

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

套用索引建議工具的建議

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 會立即清空索引建議工具的追蹤查詢集合。

設定索引建議工具

雖然索引顧問的預設設定適用於大多數用途,但您可以設定各種資料庫標記,微調其行為。詳情請參閱「索引建議指標」。