0
点赞
收藏
分享

微信扫一扫

gp的分布、分区策略(概述)

对于大规模并行处理数据库来说,一般由单master与多segment组成。
那么数据表的单行会被分配到一个或多个segment上,此时需要想一想分布策略

分布

在gp6中,共有三个策略:
哈希分布
随机分布
复制分布

哈希分布

就是对分布键进行hash,这样相同值的key始终散列到同一个segment上。如果选择唯一的分布键,将确保较均匀的数据分布。
要使用这一策略,需要在创建表使用 “DISTRIBUTED BY(column,[…])” 子句。

随机分布

将数据行按顺序依次发送到各个segment,此时具有相同值的数据行不一定位于同一个segment上。随机分布保证了数据的平均分布,但是性能显然不如hash

复制分布

gp会将每行数据分配到每个segment上,此策略下,表数据将均匀分布,每个segment存储同样的数据行。
当在segment上执行用户自定义函数且需要访问表中所有行时,此时需要用到此策略。

接下讲解分区概念
分布时对存储的数据进行物理划分,分区是逻辑划分。
分区将大表从逻辑上划分为多个子表,分区不会更改表数据在segment之间的物理分布。

分区

gp支持以下分区类型:
1、范围分区:根据数字范围,如日期或价格
2、列表分区:基于值列表的数据划分,如销售地区或者产品线
3、两种类型的组合

对大表分区可以简化数据库维护以及提高查询性能,例如通过对时间分区,可以将旧数据滚动移除出数据库。
但是创建过多的分区可能会拖慢管理和维护的速度,如清理,恢复segment,扩展集群等情况。

除非优化器可以通过查询谓词修剪分区,否则分区将不会提高查询性能。
依次扫描各个分区表的查询会比只需扫描无分区的根表要慢。所以当查询中很少使用分区裁剪的话,尽量避免对表分区。

参考

Greenplum数据分布和分区策略


举报

相关推荐

0 条评论