對于大規模并行處理資料庫來說,一般由單master與多segment組成。
那麼資料表的單行會被配置設定到一個或多個segment上,此時需要想一想分布政策
分布
在gp6中,共有三個政策:
哈希分布
随機分布
複制分布
哈希分布
就是對分布鍵進行hash,這樣相同值的key始終散列到同一個segment上。如果選擇唯一的分布鍵,将確定較均勻的資料分布。
要使用這一政策,需要在建立表使用 “DISTRIBUTED BY(column,[…])” 子句。
随機分布
将資料行按順序依次發送到各個segment,此時具有相同值的資料行不一定位于同一個segment上。随機分布保證了資料的平均分布,但是性能顯然不如hash
複制分布
gp會将每行資料配置設定到每個segment上,此政策下,表資料将均勻分布,每個segment存儲同樣的資料行。
當在segment上執行使用者自定義函數且需要通路表中所有行時,此時需要用到此政策。
接下講解分區概念
分布時對存儲的資料進行實體劃分,分區是邏輯劃分。
分區将大表從邏輯上劃分為多個子表,分區不會更改表資料在segment之間的實體分布。
分區
gp支援以下分區類型:
1、範圍分區:根據數字範圍,如日期或價格
2、清單分區:基于值清單的資料劃分,如銷售地區或者産品線
3、兩種類型的組合
對大表分區可以簡化資料庫維護以及提高查詢性能,例如通過對時間分區,可以将舊資料滾動移除出資料庫。
但是建立過多的分區可能會拖慢管理和維護的速度,如清理,恢複segment,擴充叢集等情況。