我在Redshift上有一個大約300m記錄的表格。我們是否可以在Amazon Redshift中僅使用時間戳列的年份作爲分配鍵
無論如何我們可以指定年份爲分配鍵而不是時間戳。如果我選擇密鑰diststyle,它會提高性能嗎?因爲我們大多需要查詢季度數據。
我在Redshift上有一個大約300m記錄的表格。我們是否可以在Amazon Redshift中僅使用時間戳列的年份作爲分配鍵
無論如何我們可以指定年份爲分配鍵而不是時間戳。如果我選擇密鑰diststyle,它會提高性能嗎?因爲我們大多需要查詢季度數據。
你做不是想要做到這一點。
在Amazon Redshift中,分發密鑰(DISTKEY
)用於在切片之間分配數據(每個節點有多個切片)。當一個查詢使用DISTKEY連接兩個表時,它的運行速度要快得多,因爲與這個鍵有關的兩個表中的數據都在同一個切片上 - 不需要在切片之間移動數據,切片可以並行操作。 DISTKEY應該是您最常使用的字段 - 經常與JOIN表一起使用。
還有一個排序鍵(SORTKEY
),它排序存儲在一個切片上的數據。在WHERE
子句中使用此SORTKEY的查詢將更有效,因爲查詢可以跳過磁盤上的塊。每個1MB磁盤塊包含與一個表中的一列有關的值。每個塊都有一個區域圖,用於標識塊中的最小值和最大值。如果該塊不包含與WHERE子句匹配的值,則Redshift不需要讀取該塊。這使得查詢速度非常快。
所以,如果你主要是查詢季度數據,那麼你應該將表的SORTKEY設置爲時間戳字段。這將允許每個片並行處理數據,同時跳過不相關的磁盤塊。 不要使用DISTKEY的日期值 - 這將導致只有一個片執行查詢,並且運行速度會變慢。相反,將您的DISTKEY設置爲您最常用來與其他表(例如客戶ID)連接的表。
非常感謝您的詳細解釋。你能否讓我理解數據如何分佈在多個節點上。分銷風格如何影響業績? – imVJ
文檔:[選擇最佳分發風格](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/),它爲數據分發提供了一個很好的視覺模擬。 –