开发者社区 > 大数据与机器学习 > 实时数仓 Hologres > 正文

分布键 distribution key 在Hologres 起了什么作用?

分布键 distribution key 在Hologres 起了什么作用?

展开
收起
1358896759097293 2021-03-25 11:03:42 1884 0
1 条回答
写回答
取消 提交回答
  • 45271990@qq.com

    image.png Hologres 是一个分布式的计算引擎,如果没有设置分布键,数据库表默认为随机分布 形式,数据将被随机分配到各个 shard 上;如果用户指定了分布列,数据将按照指定列, 将数据 shuffle 到各个 shard,同样的数值肯定会在同样的 shard 中。 当用户以分布列做过滤条件时,Hologres 可以直接筛选出数据相关的 shard 进行扫 描;当用户以分布列做 join 条件时,Hologres 不需要再次将数据 shuffle 到其他计算节点, 直接在本节点 join 本节点数据即可,可以大大提高执行效率;同时如果用户 group by 的 key 是分布列也可以减少一次数据 shuffle,对整个查询的性能带来非常大的提升。  对于有 pk 的表,其分布键默认就是 pk,如果不想 pk 字段作为分布键,可以指定 pk 字段的子集,但是不能随意指定。  可以通过 shard_count 来指定表的 shard 数,如果不指定的话每个数据库都有一个 默认的 shard 数, 一旦指定了一个表的 shard 数,其他的表如果想要和这个表做 local join,就必须指定 colcate with 这个表。下图所示是一个通过分布键设置来加速 两个表做 join 的场景。

    2021-03-25 14:06:11
    赞同 展开评论 打赏

本技术圈将为大家分析有关阿里云产品Hologres的最新产品动态、技术解读等,也欢迎大家加入钉钉群--实时数仓Hologres交流群32314975

相关电子书

更多
Phoenix 全局索引原理与实践 立即下载
低代码开发师(初级)实战教程 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载