teradata PI -- Join的影響

(–本文是個人學習和使用過程中的總結,如有錯誤歡迎指正 )

我們知道數據倉庫是用來支撐我們的數據展現、多維度分析甚至是數據挖掘,所以單單檢索一行或者幾行數據在數據倉庫中是幾乎不存在的。
我們總是希望用多維度的視角去觀察我們的數據,那我們的事實表就必須和我們N個維度表關聯,以實現我們多維、多粒度的數據觀察。這就要求我們的數據倉庫要有強勁的處理Join的能力,幸運的是teradata在處理這方面的能力的確很強大。

teradata要求我們做表關聯時相同的值必須在同一個AMP上,這就涉及到了數據交換。
teradata有兩種數據交換一種爲複製表(DUPLICATE),另一種爲重分佈(REDISTRIBUTE)

那麼PI是如何影響到我們的數據交換的呢?
我們可以大致分爲三種情況:
1:關聯的表都是PI或NPI,這中情況是最優的,不會涉及到數據的分佈,被稱爲AMP LOCAL
2:一張表爲PI/NPI,另外的不是,這時候數據交換就產生了。這時也分爲兩種情況,大大表和大小表。大–大關聯數據就會重分佈,大–小關聯會優先選擇複製小表
2:兩張表均不爲PI/NPI,,這時的情況和第二種一樣,也分爲大大表和大小表兩種情況。

雖然teradata處理join的能力很強悍,但是大表重分佈 必然會佔用大量的spool等系統資源。我們應儘量避免大表重分佈,儘管有時這是不可能的。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章