2016-10-20 20 views

回答

5

你做不是想要做到這一點。

在Amazon Redshift中,分發密鑰DISTKEY)用於在切片之間分配數據(每個節點有多個切片)。當一個查詢使用DISTKEY連接兩個表時,它的運行速度要快得多,因爲與這個鍵有關的兩個表中的數據都在同一個切片上 - 不需要在切片之間移動數據,切片可以並行操作。 DISTKEY應該是您最常使用的字段 - 經常與JOIN表一起使用。

還有一個排序鍵SORTKEY),它排序存儲在一個切片上的數據。在WHERE子句中使用此SORTKEY的查詢將更有效,因爲查詢可以跳過磁盤上的塊。每個1MB磁盤塊包含與一個表中的一列有關的值。每個塊都有一個區域圖,用於標識塊中的最小值和最大值。如果該塊不包含與WHERE子句匹配的值,則Redshift不需要讀取該塊。這使得查詢速度非常快。

所以,如果你主要是查詢季度數據,那麼你應該將表的SORTKEY設置爲時間戳字段。這將允許每個片並行處理數據,同時跳過不相關的磁盤塊。 不要使用DISTKEY的日期值 - 這將導致只有一個片執行查詢,並且運行速度會變慢。相反,將您的DISTKEY設置爲您最常用來與其他表(例如客戶ID)連接的表。

+0

非常感謝您的詳細解釋。你能否讓我理解數據如何分佈在多個節點上。分銷風格如何影響業績? – imVJ

+0

文檔:[選擇最佳分發風格](https://docs.aws.amazon.com/redshift/latest/dg/c_best-practices-best-dist-key.html)&[分發示例](https:/ /docs.aws.amazon.com/redshift/latest/dg/c_Distribution_examples.html)。我還建議您觀看[AWS Summit上的Redshift演示文稿](https://aws.amazon.com/summits/sydney/on-demand/),它爲數據分發提供了一個很好的視覺模擬。 –

相關問題