決定是否重建索引 - Amazon Redshift

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

決定是否重建索引

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

當您一開始使用COPY或 CREATE TABLE AS 載入空的交錯式資料表時,Amazon Redshift 會自動建立交錯索引。如果您最初使用加載交錯表INSERT,則需要在VACUUMREINDEX之後運行以初始化交錯索引。

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

查詢引擎可以使用排序順序來有效地選取處理查詢需要掃描的資料區塊。針對交錯的排序,Amazon Redshift 會分析排序索引鍵資料欄值,以判斷最佳排序順序。如果隨著資料列新增,索引鍵值的配送變更或偏移,排序策略將不再最佳,而排序的效能優勢將會降級。若要重新分析排序索引鍵分佈,您可以執行 VACUUMREINDEX. 重建索引操作相當耗時,因此,若要決定資料表是否將可從重建索引獲益,請查詢 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,則 a 通常VACUUMREINDEX會改善性能,除非基礎集合中的偏斜是固有的。

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