分佈樣式 - Amazon Redshift

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

分佈樣式

建立表格時,您可以指定下列其中一種分佈樣式:「自動」、「偶數」、「KEY」或「全部」。

如果您不指定分佈樣式,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 系統目錄檢視。如需詳細資訊,請參閱 檢視分佈樣式。如果您沒有以 CREATE TABLE 陳述式指定分佈樣式,Amazon Redshift 會套用 AUTO 分佈。

EVEN 分佈

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

KEY 分佈

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

ALL 分佈

整個資料表的副本分佈至每個節點。EVEN 分佈或 KEY 分佈只會將資料表的一部分資料列放在每個節點上,而 ALL 分佈可確保資料表參與的每個聯絡都共置每個資料列。

ALL 分佈會增加叢集中節點數所需的儲存空間,因此需要更多時間來載入資料、更新資料,或將資料插入至多個資料表。ALL 分佈僅適用於移動速度相當緩慢的資料表,亦即,不經常或廣泛更新的資料表。因為在查詢期間重新分配小型資料表的成本很低,所以將小型維度資料表定義為 DISTSTYLE ALL 沒有顯著的優勢。

注意

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

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