暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

GBase 8a 控制 join 是否启用 hash 重分布模式

原创 王海 2022-11-28
246

问题现象
gcluster_hash_redistribute_join_optimize
这个参数用于控制是否启用 Hash 重分布的 JOIN 模式。
解决方法
 参数=0,禁用 hash 重分布,拉复制表。
 参数=1,一直使用。如果开启此选项,在两个分布表进行等值 JOIN 运算
时,将把其中一个表的数据根据连接条件列的值进行哈希重分布。然后利用
各个运算节点上重分布后的临时表和另一个进行 JOIN 运算。这样,各节点 的运算结果直接汇总即可得到最终结果。
这种策略可以免于将其中一个分布表在所有运算节点上拉成复制表,而是每
个运算节点只需接收这个表的一部分数据。
 参数=2,由规则决定。应用规则为:两表的尺寸相差不超过 20%时,使用哈 希重分布 JOIN;否则不使用。
该参数的默认值是 2。
当参数=2,自动评估时,有时会将大表拉成复制表进行 join,性能较慢。比 如 3 亿的表 left join 7000 万的表,自动评估会将右表拉复制表,不如 hash 重 分布性能快。此类情况,可以配合如下参数使用:
gcluster_hash_redist_threshold_row
当该值不为 0 时,若小表拉表的数据行数大于该值,进行 HASH 重分布 JOIN。
该参数的默认值是 0。

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论