選擇最佳的分佈方式 - Amazon Redshift

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

選擇最佳的分佈方式

當您執行查詢時,查詢最佳化工具會視需要將資料列重新配送至運算節點,以執行任何聯結與彙總。選擇資料表配送樣式的目的是,藉由在執行查詢之前,將資料配置至需要的位置,以降低重新配送步驟所帶來的影響。

注意

使用自動表格優化時,不需要選擇表的分佈樣式。如需詳細資訊,請參閱 使用自動工作台優化

部分最佳做法建議如下:

  1. 將事實資料表與一維度資料表配送至它們的共通欄位。

    您的事實資料表只能有一個分佈索引鍵。聯結其他索引鍵的任何資料表都不會與事實資料表共置。依據其聯結的頻率與聯結資料列的大小,選擇一個維度進行共置。將維度資料表的主索引鍵與事實資料表的對應外部索引鍵指定為 DISTKEY。

  2. 依據篩選過的資料集大小,選擇最大的維度。

    只有用於聯結的資料列必須配送,因此應考量篩選之後的資料集大小,而非資料表的大小。

  3. 在經過篩選的結果集中選擇高基數的欄位。

    例如,如果您將銷售資料表配送至日期欄位,您可能會獲得相當平均的資料配送,除非大部分的銷售是季節性的。但是,如果您通常使用限制範圍的述詞來篩選以縮小日期期間,則大多數篩選過的資料列會發生在一組有限的分割上,而且查詢工作負載會發生偏斜。

  4. 變更一些維度資料表以使用 ALL 分佈。

    如果維度資料表無法與事實資料表或其他重要的聯結資料表共置,您可以藉由將整個資料表發佈至所有節點,以大幅提升查詢效能。使用 ALL 分佈會增加儲存空間要求,並增加載入時間與維護操作,因此在選擇 ALL 分佈之前,您應權衡所有因素。

若要讓 Amazon Redshift 選擇適當的分佈樣式,請指定AUTO以獲取分配樣式。

有關選擇分佈類型的詳細資訊,請參閲使用數據分配樣式