AlloyDB for PostgreSQL 提供索引建議,可追蹤資料庫經常處理的查詢。這項工具會定期分析這些查詢,並建議可提升查詢效能的新索引。
您可以將建議視為資料表查看及查詢,也可以隨時要求隨選分析和報表。
查看索引建議工具的建議
AlloyDB 會定期自動執行索引建議工具的分析。您可以透過每個資料庫中的兩個表格檢視畫面,查看結果:
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_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 會立即清空索引建議工具的追蹤查詢集合。
設定索引建議工具
雖然索引建議工具的預設設定適用於大多數用途,但您仍可設定各種資料庫標記,微調工具的行為。詳情請參閱「索引建議指標」參考頁面。