GBase 8a Mpp Cluster集群产品性能优化篇之数据分布

GBase8a集群性能取决于各个节点整体的性能,每个节点存储的数据量对于集群性能有很大影响,为了尽可能达到最好的性能,所有的数据节点应该尽量存储等量的数据,因此在数据库表规划定义阶段要考虑表是复制表还是分布表,以及对分布表上的某一些列设置为分布列进行hash分布。

     例如根据数据的分布特性设计,可以把字典表或者维度表建成复制表的方式将数据存储到各个节点上,不须对其数据进行分片存储,因为字典表的数据量相对较小,虽然在各个节点进行存储有一定的数据冗余,但和事实表的JOIN 运算就可在本地进行,避免节点间搬动数据。对于事实表(大表)可将数据分片到不同的节点上存储,分片方法可采用(range, round robin, hash)等不同方法,SQL执行的查询条件满足只在其中部分节点时,查询优化可决定SQL的执行仅在这些节点执行即可。

     建Hash分布列的原则基本如下:

Ø 尽量选择count(distinct)值大的列做Hash分布列,让数据均匀分布。

Ø 优先考虑大表间的JOIN,尽量让大表JOIN条件的列为Hash分布列(相关子查询的相关JOIN也可以参考此原则),以使得大表间的JOIN可以直接分布式执行。

Ø 其次考虑GROUP BY,尽量让GROUP BY带有Hash分布列,让分组聚合一步完成。

Ø 通常是等值查询的列,并且使用的频率很高的应考虑建立为hash分布列

     注意事项:

Ø hash分布键只能选择 1 个

Ø hash分布键只能选择数值和字符串类型的列

Ø 作为hash分布列的列不能进行update

Ø 尽量保持hash join的等值关联列在类型定义上完全相同,如char和varchar类型进行关联,可能出现结果为空情况,原因是char型不足最大长度时用空格补齐,varchar则没有空格,如果关联则需要trim空格

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值