GBase 8a
安装配置
文章

建表原则

发表于2024-12-31 10:06:1459次浏览3个评论

1、gbase数据库建表时创建分布列选择业务常用的字段还是不常用但是数据重复性小的字段作为分布列?

最好选择业务常用并且重复值小的字段作为hash分布列,分布列选择遵从四大原则:

1)数据均匀分布:尽量选择 count(distinct)值大的列做 Hash 分布列,尽量使数据均匀分布;

2)分布式多节点操作:优先考虑大表间的 JOIN,尽量让大表 JOIN 条件的列为Hash 分布列(相关子查询的相关 JOIN 也可以参考此原则),以使得大表间的 JOIN 可以直接分布式发布到每个节点执行;

3)尽量选择使用频率高的 grour by 列:尽量让 GROUP BY 带有 Hash 分布列,让分组聚合一步完成;

4)多节点运行:选择某数据列随机性很大的字段,避免部分节点的热查询,导致执行性能不均衡。

 

2、gbase数据库建表时支持多个字段同时作为分布列字段吗?

支持多个字段作为hash分布键,多个字段作为hash分布键应对的是如下场景:

比如两表关联,关联键为a、b两列或多列,即t1.a=t2.a and t1.b=t2.b,这时单独选择a或b列作为hash分布列时,由于a、b两列都存在较多重复值,单独选择a或b做分布列时,数据分布不均,造成各节点性能差异较大,这时同时选择a和b作为分布列,使各节点数据分布相对更加均匀,减小节点间性能差异以提升性能。

对实际生产中分布列选择我的建议是根据部分业务,选择常用的关联键作为hash分布键,这样可以保障一部分业务性能,至于剩余照顾不到的业务,如果性能有不满足业务需求的再根据实际进行调整即可,如果所有表都不加hash分布列,后面出现性能问题一样也会进行这部分优化调整,如果实际使用中业务人员拿不准怎么去调整优化,也可找我司人员进行支持。

评论

登录后才可以发表评论
用户头像
levvel发表于 9个月前
听说评论可以拿积分,我试一下子
GBase用户51885发表于 2个月前
继续努力
GBase用户51935发表于 2个月前
闪闪发光