问题现象
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。
GBase 8a 控制 join 是否启用 hash 重分布模式
本文介绍gcluster_hash_redistribute_join_optimize参数的作用,包括其不同取值对JOIN性能的影响,以及如何解决自动评估时可能的大表复制问题。重点讲解了哈希重分布策略和配合gcluster_hash_redist_threshold_row参数的使用场景。
1132

被折叠的 条评论
为什么被折叠?



