ITPub博客

首页 > 数据库 > 国内数据库 > 探秘南大通用 GBase 8a 数据库的静态 hash join 策略

探秘南大通用 GBase 8a 数据库的静态 hash join 策略

原创 国内数据库 作者:GBASE南大通用 时间:2025-08-01 15:46:37 0 删除 编辑

南大通用GBase 8a数据库应用执行的SQL语句中2个表进行Join操作,该2张表的关联列都是分布表的hash分布列,则GCluster层使用静态hash join的策略进行查询优化,即直接在本地进行local join。
应用进行查询,查询语句为:SELECT uid,name FROM T1 JOIN T2 ON T1.gid=T2.gid WHERE uid=10;
在数据库中的表结构为:

该查询在GBase 8a MPP Cluster执行步骤如下:
1、该查询通过GBase 8a MPP Cluster的接口层进行负载均衡后发送给Node1节点上的GCluster组件。
2、Node1节点上的GCluster组件接收到该SQL后,进行语法解析,GCluster判断出T1,T2表的关联列都是hash分布列,故只需把SQL语句中的T1,T2表分别换成各个节点上的分片的表名后分别发送给Node1,Node2,Node3的GNode进行查询执行。
发送给Node1,Node2,Node3的GNode组件的SQL语句如下:
Node1:
SELECT uid,name FROM T1_1 JOIN T2_1 ON T1_1.gid=T2_1.gid WHERE uid=10;
Node2:
SELECT uid,name FROM T1_2 JOIN T2_2 ON T1_2.gid=T2_2.gid WHERE uid=10;
Node3:
SELECT uid,name FROM T1_3 JOIN T2_3 ON T1_3.gid=T2_3.gid WHERE uid=10;
3、Node1,Node2,Node3节点上的GNode接收到SQL后,进行执行该查询。
4、Node1,Node2,Node3节点上的GNode把查询结果返回给Node1节点的GCluster,由它负责把结果返回给应用。

查询计划示意如下:


来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/69979120/viewspace-3092597/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
GBASE南大通用,致力于成为用户最信赖的数据库产品供应商!

注册时间:2020-07-16

  • 博文量
    1319
  • 访问量
    1298586