甲骨文认证体系
Vmware认证体系
AWS亚马逊
阿里云认证体系
红帽认证体系
ZStack云计算认证体系
思科认证体系
华为认证体系
CDA数据分析师认证
达梦认证体系
麒麟
定制化课程
达梦数据库课程干货分享DMMPP数据分布方式简析
发布日期:2020-08-19 10:44:04阅读次数:

DMMPP支持随机分布、复制分布(fully)、哈希分布、范围分布、LIST列表分布等多种分布表的类型,用户可根据实际情况选择合适的分布类型。

 

一、随机分布


1、语法

指定随机分布:CREATETABLE T1(C1 INT) DISTRIBUTED RANDOMLY;

普通语句在MPP模式下建分布表,如果未指定列则默认为RANDOMLY(随机)分布表

CREATE TABLE T1(C1INT);

注意:当使用DTS迁移或用户提供的SQL脚本进行DMMPP环境表结构创建时一定要了解应用业务情况,评估使用默认随机分布是否可满足需求。


2、适用

适用于无关联、无要求的表,分布相对均匀。


3、缺点和限制

(1)不支持唯一索引;

(2)若存在表关联一定存在数据搬迁;

(3)不允许更新分布列;


二、复制分布


1、语法

指定复制分布:CREATETABLE T1(C1 INT) DISTRIBUTED FULLY;


2、适用

维度表


3、缺点和限制

(1)只支持单表查询的更新和删除操作,并且查询项或者条件表达式中都不能包含ROWID伪列表达式;

(2)复制表虽然已经支持修改和删除数据,但不建议数据变化过于频繁;

(3)不允许更新分布列;


三、哈希分布


1、语法

指定hash分布:CREATE TABLE T1(C1 INT) DISTRIBUTED BY HASH(C1);

也可以省略HASH:CREATE TABLE T1(C1 INT) DISTRIBUTED BY (C1);


2、适用

数据质量相对均匀且要求均匀分布,要使用主键。

选择分布列的原则:根据应用业务逻辑,需要进行关联查询的表应该选择同一种分布方式且分布列应选择关联列作为分布列,此时可以使得数据进行节点内关联减少节点间数据搬迁的MAL交互;当一个表要和多个表使用不同的列进行关联查询时选择分布列要有针对性的取舍。


3、缺点和限制

(1)主键必需包含分布列,此时要求选择的分布列符合非空约束;

(2)若分布列不能满足非空,可将主键转换为约束方式:原主键列改为非空且唯一约束,但是对于原聚集主键会失去聚集的特性;

(3)外键(引用约束)必需包含分布列,引用列和被引用列都必需包含分布列,且分布情况完全相同;

(4)包含INSTEAD OF触发器的表及垂直分区表不允许更新分布列。


四、范围分布


1、语法

指定范围分布:CREATETABLE T1(C1 INT) DISTRIBUTED BY RANGE(C1) (VALUES EQU OR LESS THAN (2) ON EP01,VALUES EQU OR LESS THAN (4) ON EP02, VALUES EQU OR LESS THAN (6) ON EP03,VALUES EQU OR LESS THAN (MAXVALUE) ON EP04);


2、适用

带有明显范围特性的数据且针对不同范围操作不相互影响


3、缺点和限制

(1)可能存在数据分布不均匀的情况,且表结构一旦确定则不能动态增加范围;

(2)分布列与分布列值列表必须一致,并且指定的实例名不能重复;

(3)包含INSTEAD OF触发器的表及垂直分区表不允许更新分布列。


五、LIST列表分布


1、语法

指定LIST列表分布:CREATE TABLE T1(C1 INT)DISTRIBUTED BY LIST(C1)(VALUES(1,8) ON EP01,VALUES(2,7) ON EP02, VALUES(3,6) ON EP03, VALUES(4,5) ON EP04);


2、使用

带有明显属性特征的数据,列表项不建议过多


3、缺点和限制

(1)可能存在数据分布不均匀的情况,且表结构一旦确定则不能动态增加列表项;

(2)分布列与分布列值列表必须一致,并且指定的实例名不能重复;

(3)包含INSTEAD OF触发器的表及垂直分区表不允许更新分布列。