GBase 8a
运维管理
文章

GBase 8a SQL查询在节点的执行过程

发表于2025-03-22 21:33:20153次浏览1个评论

        GBase 8a MPP Cluster集群中GNode是数据分布式存储和计算的基本单元,SQL查询通过GCluster层解析生成分布式执行计划后,主要的执行工作在个节点的GNode层执行。SQL查询在GNode上的执行过程通常为如下步骤:
        smart scan -> scan -> join -> aggregation -> sort -> materialization -> sent result.
        1)smart scan(智能扫描):smart scan步骤主要采用GBase 8a MPP Cluster特有的智能索引技术对where条件语句中的查询条件进行过滤,智能索引技术是南大通用在列存储基础上开发的特有索引技术,与传统索引相比具有性能优异、代价小的特点,是GBase 8a MPP Cluster区别于其他数据库的主要技术特点。关于智能索引技术工作原理,请参见第五章中的相关内容。smart scan通过对查询条件涉及到列的智能索引进行扫描,可以实现对查询条件列的大块数据(数据包即DC是GBase 8a MPP Cluster物理存储单位,存储该列顺序的65536个字段值)是否符合过滤条件进行快速判断,从而有效降低普通扫描带来的磁盘I/O消耗。
        2)scan:对smart scan过程中部分命中(此部分解释请参见第五章中相关内容)的DC读入内存并根据where中过滤条件进行扫描过滤。
        3)join:通过连接条件对两表进行join,GBase 8a MPP Cluster支持hash join、sort merge join和nest loop join三种模式。对于最常见的等值连接,如 T1.a=T2.b连接条件默认采用hash join方式。针对分布式数据存储条件下两表的hash join执行计划和策略,可参见第四章中相关内容。
        4)aggregation:各节点分别进行聚集操作,然后将结果发送给SQL发起节点进行汇总。对group by类聚集操作,主要分为两种情况:
             1.如果group by条件中存在hash分布表的hash列,则各节点分别group by的结果由汇总节点直接返回。
             2.如果group by条件中不存在分布表的hash列,则需将各节点现在本地进行group by然后将各节点的group by的中间结果按照,group by的第一个条件列进行动态hash重分布到各节点,各节点再进行本地group by,然后将结果由汇总节点直接返回。
        5)sort:sort排序操作在SQL发起节点上进行,即SQL发起节点将上一步的中间结果进行汇总后进行排序
        6)materialization:即将select涉及的投影列读入内存,如查询语句不涉及聚集和排序,物化过程在这一阶段进行,smart scan,scan和join阶段操作在内部均使用行号代表需要物化的投影列实际数据。包含聚集和排序操作的时候通常无需单独的物化步骤,物化在聚集和排序过程中已经完成。
        7)sent result:将查询结果发送给统一接口层并返回给上层应用。
      上述执行过程为一条SQL的一般执行过程,如果是包含嵌套子查询的复杂SQL,嵌套子查询从内至外递归执行,每一层的执行顺序与上述过程基本相同。

评论

登录后才可以发表评论
用户头像
levvel发表于 7个月前
感谢分享