2021-11-29
当GBase 8a执行join查询时,能不能通过调整 执行参数提高join的执行效率
如题。
在GBase 8a中是否有参数可以进行调节,如何进行调整?
我来答
添加附件
收藏
分享
问题补充
2条回答
默认
最新
回答交流
提交
问题信息
请登录之后查看
邀请回答
暂无人订阅该标签,敬请期待~~
墨值悬赏
如题。
在GBase 8a中是否有参数可以进行调节,如何进行调整?
| join场景 | gcluster_hash_redistribute_join_optimize 参数1 | gcluster_hash_redist_threshold_row 参数2 | 执行计划 |
| 两表均为分布表, join条件为两表hash分布列 | 2或1 | 无影响 | 直接本地进行join运算 走静态hash join执行计划, |
| 一表为分布表,一表为复制表 | 无影响 | 无影响 | 直接本地进行join运算 走分布表join复制表执行计划 |
| 两表均为分布表 join条件为其中一表hash分布列 | =2 根据参数2判断执行计划 =1 走执行计划1) =0 走执行计划2) | 参数1= 2,根据参数2的数值评估,如下: IF 小表条数 < gcluster_hash_redist_threshold_row and 大表和小表的条数差距超过20% Then 走执行计划2 Else 走执行计划1 END | 1)将非join列hash分布表按照join条件列动态重分布,走动态重分布hash join执行计划1 2)将较小的表拉成复制表,走拉复制表执行计划 |
| 两表为分布表, join条件非两表任意一表hash分布列 | =2 根据参数2判断执行计划 =1 走执行计划1) =0 走执行计划2) | 如参数1 = 2,根据参数2的数值评估,如下: IF 小表条数 < gcluster_hash_redist_threshold_row and 大表和小表的条数差距超过20% Then 走执行计划2 Else 走执行计划1 END | 1)将两个非join列hash分布表按照join条件列分别动态重分布,走动态重分布hash join 2)将较小的表拉成复制表,走拉小表拉复制表执行计划 |
评论
有用 0
可以
通过 gcluster_hash_redistribute_join_optimize 该参数
是否启用Hash重分布的JOIN模式。默认值是2。
参数=0禁用。
参数=1一直使用。在两个分布表进行等值JOIN运算时,
将把其中一个表的数据根据连接条件列的值进行哈希重分布。
然后,利用各个运算节点上重分布后的临时表和另一个进行JOIN运算。
这样,各节点的运算结果直接汇总即可得到最终结果。
这种策略可以免于将其中一个分布表在所有运算节点上拉成复制表,而是每个运算节点只需接收这个表的一部分数据。
参数=2由规则决定:两表的尺寸相差不超过20%时,使用哈希重分布JOIN;否则不使用
评论
有用 0
墨值悬赏