简介
针对哈希表(单列hash)与其他表等值join的语句,集群层执行策略如下:
Join表类型 | Join列 | 查询计划策略 |
复制表join复制表 | 普通列=普通列 | 直接下发到单节点执行 |
复制表join分布表 | 普通列=普通列/hash列 | 直接下发到各个节点执行 |
分布表join分布表 | hash列=hash列 | 直接下发到各个节点执行 |
普通列=hash列 | 策略一:将普通列进行hash重分布 策略二:将其中一个分布表拉成复制表 然后下发到各个节点执行 | |
普通列=普通列 |
执行策略
- 静态hash优化(直接下发)
- 动态hash优化(hash重分布)
- 非hash优化(拉复制表)
参数介绍
1.hash重分布参数(只支持列)
- 名称:gcluster_hash_redistribute_join_optimize
- 取值范围:【0|1|2】,默认值为2
0 拉复制表模式
1 hash重分布模式
2 自动评估模式
- 约束限制
1.联接条件是等值联接
2.联接条件的左右来自实体表或隐式表的列,且列上不能带有表达式运算
3.联接条件的数据类型必须一致,其中char类型同时要求精度必须一致,其他
类型不要求精度(int和varchar族是特例)
2.表达式重分布参数
- 名称:_t_gcluster_expr_hash_join_optimize
- 取值范围:【0|1】,默认值为1
0 关闭
1 开启
- 约束限制:
1.继承hash重分布参数的约束限制
2.其中hash重分布仅支持列的限制被扩展为:支持列及列的表达式
3.等号两边表达式所用到的列分属于进行连接的两组表如:t1.i+t2.i=t1.j+1 不支持
3.hash重分布条数控制参数
- 名称:gcluster_hash_redist_threshold_row
- 取值范围:【0 ~9223372036854775807】,默认值为0
0 关闭
1~9223372036854775807 数据条数