0
点赞
收藏
分享

微信扫一扫

走进GBase 8s之分布式功能(四)分布式查询

狐沐说 2022-03-22 阅读 61

对于分布式查询,根据关联表类型的不同分为:复制表+复制表、复制表+分片表、分片表+分片表,数据落在相同HG上、分片表+分片表,数据落在不同HG上四种情况,详细查询原理如下:

  1. 复制表+复制表

 

  • 应用发出查询SQL;
  • GCluster解析SQL,计算出SQL涉及的表均为复制表;
  • 向本HG发送SQL;
  • 获得结果返回应用。

这类查询不涉及数据移动,无临时计算结果,查询性能高,支持高并发,性能线性提升。

  1. 复制表+分片表

 

  • 应用发出查询数据SQL;
  • GCluster据查询条件判断一复制表和一分片表,则分别向HG-1、HG-2、HG-3查询数据;并获得每个节点上结果;
  • 合并结果并返回。

这类查询性能较高,高并发的支持不如只涉及单组情况,适于大表的存储。

  1. 分片表+分片表数据落在相同HG上

 

TD1和TD2皆为分片表,以uid为分片列

  • GCluster接收到SQL后,根据元数据内存储的分片规则,确认此次查询仅涉及HG-1;
  • 把SQL语句直接发送给HG-1,获得执行结果;
  • GCluster1将结果返回给用户。

这类查询性能高,无冗余操作,支持高并发,线性提升

(4)分片表+分片表,数据落在不同HG上

 

TD1和TD2皆为分片表,以uid为分片列

  • GCluster接收到SQL后,根据元数据内存储的分片规则,根据TD1表的分片规则,生成分布SQL语句;
  • 把SQL语句发送给HG-1数据引擎进行执;
  • HG-1拉取其他HG上TD2表uid<60的数据;
  • 进行JOIN查询计算;
  • HG-1将结果返回给GCluster1;
  • GCluster1返回给用户。

这类查询性能较差,涉及数据移动,跨节点拉数据,网络传输是瓶颈。

举报

相关推荐

0 条评论