大表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的数据量较小,则会把该表拉成复制表并复制到集群中的所有节点,之后在节点上进行Join并返回结果,
(B)如果两个表实际参与Join的数据量仍然较大,则会根据Join条件对Join条件列在集群范围内进行Hash重分布,之后在节点内部进行Join并返回结果。



