数据分布
https://yq.aliyun.com/articles/57822
https://segmentfault.com/a/1190000022005788
http://www.dbdream.com.cn/2016/01/greenplum%E6%95%B0%E6%8D%AE%E5%BA%93%E5%88%9B%E5%BB%BA%E8%A1%A8%E5%8F%8A%E8%A1%A8%E7%9A%84%E6%95%B0%E6%8D%AE%E5%88%86%E5%B8%83/
由于GreenPlum是一个分布式数据库,表的数据当然是分布到所有Segment节点上,那么如何控制表中数据的分布呢?下面就来介绍下GreenPlum的数据分布策略。
| 哈希分布 | 随机分布 | 复制分布 | |
|---|---|---|---|
| 适用版本 | GP5,GP6 | GP5,GP6 | GP6 |
| 语句 | DISTRIBUTED BY (column, [ … ]) | DISTRIBUTED RANDOMLY | DISTRIBUTED REPLICATED |
| 默认策略 | ✔ | ✘ | ✘ |
| 存储 | 1 segment | 1 segment | N segment |
| 均匀分布 | 取决于分布键 | ✔ | ✔ |
| 查询性能 | ✔ | ✘ | - |
- 哈希分布
创建表使用“DISTRIBUTED BY (column, [ … ])”子句,指定某个列或者某几个列的组合作为分布键。
散列算法使分布键将每一行分配给特定的segment。计算分布键的hash值,相同hash值的数据会散列到同一个segment上。选择唯一的分布键(例如Primary Key)将确保较均匀的数据分布。这样,哈希分布的多表关联时,如果关联字段都是分布键,相同hash值的数据肯定会分布到同一个segment,就可以在每个segment关联后,segment把结果发送到master节点,再由master节点汇总,将最终的结果返还客户端。
如果创建表时未提供DISTRIBUTED子句,则将PRIMARY KEY(如果表真的有的话)或表的第一个合格列用作分布键。什么类型的列是合格列呢?几何类型或用户自定义数据类型的列不能用作Greenplum分布键列。如果表中没有合格的列,则退化为随机分布策略。
但是,如果未提供DISTRIBUTED子句,Greenplum最后会选择哪种分布策略还会受其它因素的影响,例如:GUC gp_create_table_random_default_distribution和当时使用的优化器(optimizer)也将影响最终决定表的默认分布策略。因此,请千万不要忘记在CREATE TABLE时添加DISTRIBUTED BY子句。
gp_create_table_random_default_distribution设置为off,表的默认分布策略是哈希分布;设置为on,表的默认分布策略是随机分布。
[gpadmin@server100 ~]$ gpconfig -s gp_create_table_random_default_distribution
Values on all segments are consistent
GUC : gp_create_table_random_default_distribution
Master value: off
Segment value: off
默认分布策略为哈希分布,创建表时不指定分布键,默认使用第一个字段作为分布键。
testdb=# show gp_create_table_random_default_distribution;
gp_create_table_random_default_distribution
---------------------------------------------
off
(1 row)
testdb=# CREATE TABLE t_hash (name varchar(10), id int);
NOTICE: Table doesn't have 'DISTRIBUTED BY' clause -- Using column named 'name' as the Greenplum Database data distribution key for this table.
HINT: The

本文详细介绍了Greenplum数据库中的三种数据分布策略:哈希分布、随机分布和复制分布。哈希分布通过指定分布键实现数据均匀分布,提高多表关联性能;随机分布将数据循环发送至各节点,虽保证数据平均分布但降低查询效率;复制分布则将数据完全复制至所有节点,适用于小表与大表联接或需访问全表数据的场景。
最低0.47元/天 解锁文章
3475

被折叠的 条评论
为什么被折叠?



