分佈樣式 - Amazon Redshift

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

分佈樣式

建立資料表時,您可以指定下列其中一種分佈樣式:AUTO、KEY、 EVEN或 ALL。

如果您未指定分佈樣式,Amazon Redshift 會使用AUTO分佈。

AUTO 分佈

透過AUTO分佈,Amazon Redshift 會根據資料表資料的大小來指派最佳分佈樣式。例如,如果指定AUTO分佈樣式,Amazon Redshift 最初會將ALL分佈樣式指派給小型資料表。當資料表變大時,Amazon Redshift 可能會將分佈樣式變更為 KEY,選擇主索引鍵 (或複合主索引鍵的一欄) 作為分佈索引鍵。如果資料表變大,而且任何資料欄都不適合成為分發金鑰,Amazon Redshift 會將分發樣式變更為 EVEN。分佈樣式的變更會發生在背景中,對使用者查詢的影響最小。

若要檢視 Amazon Redshift 自動執行的動作來修改資料表分佈索引鍵,請參閱 SVL_AUTO_WORKER_ACTION。若要檢視有關修改資料表分佈索引鍵的目前建議,請參閱 SVV_ALTER_TABLE_RECOMMENDATIONS

若要檢視套用至資料表的分佈樣式,請查詢 PG_CLASS_ INFO系統目錄檢視。如需詳細資訊,請參閱檢視分佈樣式。如果您沒有使用 CREATETABLE陳述式指定分佈樣式,Amazon Redshift 會套用AUTO分佈。

EVEN 分佈

領導者節點會以循環模式在配量之間分佈資料列,而不考慮任何特定資料欄的值。EVEN 當資料表不參與聯結時,分發是適當的。當KEY分佈和ALL分佈之間沒有明確的選擇時,也是適當的。

KEY 分佈

資料列根據一個欄的值來分佈。領導節點會將相符的值放在相同的節點配量。如果您根據聯結索引鍵來分佈一對資料表,領導者節點會根據聯結欄的值將資料列共置在配量。這樣,來自共同資料欄的比對值會實際儲存在一起。

ALL 分佈

整個資料表的副本分佈至每個節點。當EVEN分佈或KEY分佈在每個節點上僅放置資料表資料列的一部分時,ALL分佈可確保每個資料列都與資料表參與的每個聯結集中。

ALL 分佈會乘以叢集中節點數量所需的儲存體,因此載入、更新或插入資料到多個資料表需要更長的時間。ALL 分佈僅適用於相對較慢的移動資料表;也就是說,未經常或廣泛更新的資料表。由於查詢期間重新分發小資料表的成本較低,因此將小維度資料表定義為 DISTSTYLE 並沒有顯著的好處ALL。

注意

指定資料欄的分佈樣式之後,Amazon Redshift 就會在叢集層級上處理資料分佈。Amazon Redshift 不需要或不支援在資料庫物件內分割資料的概念。您不需要建立資料表空間或定義資料表的分割方案。

在某些情況下,您可以在建立資料表的分佈樣式之後,變更該分佈樣式。如需詳細資訊,請參閱ALTER TABLE。對於建立資料表分佈樣式之後無法加以變更的情況,您可以重新建立資料表,並以深層複製填入新資料表。如需詳細資訊,請參閱 執行深層複製