GBase 8a
性能调优
文章

大表JOIN的原理

发表于2024-02-27 11:10:26152次浏览2个评论

大表Join是Shared Nothing架构的数据库集群所面临的普遍问题,同样作为Shared Nothing架构的数据库集群,GBase 8a集群与Teradata的大表Join原理基本上是完全相同的。
对于GBase 8a集群 ,大表JOIN原理描述如下:
(1)如果两个大表的数据均使用Hash方式分布,且Hash列包含在等值Join条件中,则在各个节点内部进行Join,节点层Join操作完成即返回运算结果;
(2)如果两个大表的数据均使用Hash方式分布,但Hash列未包含在等值Join条件中,则会根据两表的实际参与Join的数据量进行评估:
    (A)如果两个表实际参与Join的数据量相差超过20%,则会把小表拉成复制表并复制到集群中的所有节点,之后在节点上进行Join并返回结果;
    (B)如果两个表实际参与Join的数据量相差不超过20%,则会根据Join条件对Join条件列在集群范围内进行Hash重分布,之后在节点内部进行Join并返回结果。
(3)如果两个大表都是随机分布,自动评估的原则和情况(2)是相同的。

评论

登录后才可以发表评论
石金文发表于 2年前
优秀,感谢,学到了
GBase用户51935发表于 2个月前
谢谢分享