ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

GBase 8a Mpp Cluster集群产品性能优化篇之关联顺序

2022-02-08 11:33:44  阅读:241  来源: 互联网

标签:join 8a value Cluster duplicate Mpp JOIN x1 left


优化器可能不会调整LEFT JOIN语句的顺序,而用户语句的JOIN顺序可能不是最优,导致查询性能较低。

SQL特征

语句包含多个LEFT JOIN

多个LEFT JOIN的ON条件均为t1.colX = tn.colX

如:select x1.* from x1

left join x2 on x1.many_duplicate_value = x2.many_duplicate_value

left join x3 on x1.no_duplicate_value = x3.no_duplicate_value

left join x4 on x1.hash_col = x4.hash_col;

优化场景

语句特征满足上面的特征描述。

LEFT JOIN的右表,一些表可以直接与左表形成Hash JOIN关系,一些表可能会导致左表发生膨胀。

优化效果

让形成Hash JOIN关系的LEFT JOIN先执行,避免拉表。

例如SQL特征中描述的语句,因为left join x4 on x1.hash_col = x4.hash_col是Hash分布式JOIN,因此可以提到最前面,直接分布式执行。

让膨胀率小的LEFT JOIN先执行,减小拉表数据量。

如果参与JOIN条件的列的值的重复度较高,则很可能会造成LEFT JOIN结果发生膨胀。一般来说,使用主键列参与的JOIN条件,膨胀率是最小的;而重复值越多的列,膨胀率就越可能高。

例如SQL特征中描述的语句,因left join x3 on x1.no_duplicate_value = x3.no_duplicate_value对x1的膨胀率比left join x2 on x1.many_duplicate_value = x2.many_duplicate_value小,因此可以把left join x3提到left join x2前面。

通过这种调整,避免对膨胀后的数据拉表,减小了拉表数据量。

示例语句

select x1.* from x1

left join x2 on x1.many_duplicate_value = x2.many_duplicate_value

left join x3 on x1.no_duplicate_value = x3.no_duplicate_value

left join x4 on x1.hash_col = x4.hash_col;

改写后语句

select x1.* from x1

left join x4 on x1.hash_col = x4.hash_col;

left join x3 on x1.no_duplicate_value = x3.no_duplicate_value

left join x2 on x1.many_duplicate_value = x2.many_duplicate_value

     注:因x1.hash_col = x4.hash_col使用Hash分布列,因此left join x4调整到第1个位置;因x1.no_duplicate_value = x3.no_duplicate_value的膨胀率比x1.many_duplicate_value = x2.many_duplicate_value的膨胀率低,因此把left join x3调整到left join x2之前。

标签:join,8a,value,Cluster,duplicate,Mpp,JOIN,x1,left
来源: https://blog.csdn.net/zhu1981hui/article/details/122820659

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有