本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
選擇最佳的分佈方式
當您執行查詢時,查詢最佳化工具會視需要將資料列重新配送至運算節點,以執行任何聯結與彙總。選擇資料表配送樣式的目的是,藉由在執行查詢之前,將資料配置至需要的位置,以降低重新配送步驟所帶來的影響。
注意
當您使用自動資料表最佳化時,您不需要選擇資料表的分佈樣式。如需詳細資訊,請參閱自動資料表最佳化。
部分最佳做法建議如下:
-
將事實資料表與一維度資料表配送至它們的共通欄位。
您的事實資料表只能有一個分佈索引鍵。聯結其他索引鍵的任何資料表都不會與事實資料表共置。依據其聯結的頻率與聯結資料列的大小,選擇一個維度進行共置。將維度表格的主索引鍵和事實資料表的對應外來索引鍵指定為DISTKEY。
-
依據篩選過的資料集大小,選擇最大的維度。
只有用於聯結的資料列必須配送,因此應考量篩選之後的資料集大小,而非資料表的大小。
-
在經過篩選的結果集中選擇高基數的欄位。
例如,如果您將銷售資料表配送至日期欄位,您可能會獲得相當平均的資料配送,除非大部分的銷售是季節性的。但是,如果您通常使用限制範圍的述詞來篩選以縮小日期期間,則大多數篩選過的資料列會發生在一組有限的分割上,而且查詢工作負載會發生偏斜。
-
變更某些維度表以使用ALL分佈。
如果維度資料表無法與事實資料表或其他重要的聯結資料表共置,您可以藉由將整個資料表發佈至所有節點,以大幅提升查詢效能。使用ALL分配會使儲存空間需求倍增,並增加載入時間和維護作業,因此您應該在選擇ALL分配之前權衡所有因素。
若要讓 Amazon Redshift 選擇適當的分佈樣式,請指定分佈樣式的 AUTO
。
如需選擇分佈樣式的相關資訊,請參閱 查詢最佳化的資料分佈。