分布键 distribution key 在Hologres 起了什么作用?
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 的场景。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
本技术圈将为大家分析有关阿里云产品Hologres的最新产品动态、技术解读等,也欢迎大家加入钉钉群--实时数仓Hologres交流群32314975