“G”术时刻:南大通用GBase 8a数据库集群执行原理分析:查询执行过程
南大通用GBase 8a MPP Cluster数据库 对一个SQL查询的整体执行过程,可分为3个阶段:

步骤一:
统一接口层收到上层发送的SQL查询请求,并根据应用代码中连接串指定的集群节点地址或经过负载均衡后选出的集群节点地址,将SQL发送至指定节点的GCluster层。
步骤二:
收到SQL 查询请求的节点GCluster层负责对SQL进行词法、语法检查,同时针对GBase 8a MPP Cluster特性进行查询优化,生成分布式执行计划,再将生成的分布式执行计划发送至集群相关节点的GNode层进行执行。GCWare层对各节点当前状态进行监控,并将节点状态信息发送GCluster层,告知各节点当前可用状态,保证分布式查询计划可以正确执行。
步骤三:
集群各节点GNode层对下发至节点的执行计划进行解析和执行。各节点GNode层在执行过程中涉及到数据在不同节点间的搬运、结果汇总等操作通过GCluster层进行统一调度,GCwWare层在各节点执行过程中对节点状态进行监控,各节点将最终执行结果将发送至SQL发起节点进行汇总,再通过统一接口层返回给上层应用。
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 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类聚集操作,主要分为两种情况:
a. 如果group by条件中存在hash分布表的hash列,则各节点分别group by的结果由汇总节点直接返回。
b. 如果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,嵌套子查询从内至外递归执行,每一层的执行顺序与上述过程基本相同。

浙公网安备 33010602011771号