決定是否重建索引 - Amazon Redshift

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

決定是否重建索引

您通常可以使用交錯的排序樣式大幅改善查詢效能,但如果排序索引鍵資料欄中值的配送變更,效能可能隨著時間降級。

當您最初使用 COPY 或 CREATE TABLE AS 載入空白的交錯資料表時,Amazon Redshift 會自動建立交錯的索引。如果您最初使用 INSERT 載入交錯的資料表,您之後必須執行 VACUUM REINDEX,才能初始化交錯的索引。

隨著時間,在您新增具有新排序索引鍵值的資料列時,如果排序索引鍵資料欄中值的配送變更,效能可能降級。如果您的新資料列主要在現有排序索引鍵值的範圍內,則不需要重建索引。執行 VACUUM SORT ONLY 或 VACUUM FULL 來還原排序順序。

查詢引擎可以使用排序順序來有效地選取處理查詢需要掃描的資料區塊。針對交錯的排序,Amazon Redshift 會分析排序索引鍵資料欄值,以判斷最佳排序順序。如果隨著資料列新增,索引鍵值的配送變更或偏移,排序策略將不再最佳,而排序的效能優勢將會降級。若要重新分析排序索引鍵配送您可以執行 VACUUM REINDEX。重建索引操作相當耗時,因此,若要決定資料表是否將可從重建索引獲益,請查詢 SVV_INTERLEAVED_COLUMNS 檢視。

例如,下列查詢顯示使用交錯排序索引鍵的資料表的詳細資訊。

select tbl as tbl_id, stv_tbl_perm.name as table_name, col, interleaved_skew, last_reindex from svv_interleaved_columns, stv_tbl_perm where svv_interleaved_columns.tbl = stv_tbl_perm.id and interleaved_skew is not null; tbl_id | table_name | col | interleaved_skew | last_reindex --------+------------+-----+------------------+-------------------- 100048 | customer | 0 | 3.65 | 2015-04-22 22:05:45 100068 | lineorder | 1 | 2.65 | 2015-04-22 22:05:45 100072 | part | 0 | 1.65 | 2015-04-22 22:05:45 100077 | supplier | 1 | 1.00 | 2015-04-22 22:05:45 (4 rows)

interleaved_skew 的值為比率,指出偏移量。值為 1 表示沒有偏移。如果偏移大於 1.4,VACUUM REINDEX 一般將會改善效能,除非偏移本來就在基礎設定中。

您可以使用 last_reindex 中的日期值來判斷自上次重建索引後經過的時間。