逐个排查右表,对于右表是分布表且破坏hash分布的,如果数据量小,直接修改为复制表,避免将大表进行拉表操作;如果数据量大(1亿以上的),通过调整gcluster_hash_redistribute_join_optimize参数进行验证,参数说明如下:
set gcluster_hash_redistribute_join_optimize=0|1|2
0 -- 拉复制表
1 -- 重分布
2 -- 自动评估,根据数据量,左右表行数接近使用重分布,如果差距大,则小表拉复制表 。
注:遇到 left join 语句时,评估右表是否建为复制的原则是:
(1)如果右表的字段不大于10个,且记录数不大于5000万行,则右表创建为复制表; (2)如果右表字段数大于10个,且记录数不大于1000万,则右表创建为复制表,
(3)其它情况,右表创建为分布表,且必须指定Hash列。条件(1)和(2)满足一个,则须把右表创建为复制表。