详解GaussDB(DWS)中的行执行引擎

1.前言

GaussDB(DWS)包含三大引擎,一是SQL执行引擎,用来解析用户输入的SQL语句,生成执行计划,供执行引擎来执行;二是执行引擎,其中包含了行执行引擎和列执行引擎,执行引擎即查询的执行者,位于优化器和存储引擎之间,负责将数据从存储引擎中读取出来,并根据计划将数据处理加工后返回给客户端,执行引擎的目标是为了更好地利用计算资源,更快地完成计算。三是存储引擎,决定了数据库数据的存取方式,直接影响了数据库的读写性能。

其中行执行引擎应用于行存表中,传统的OLTP(OnLine Transaction Processsing 联机事务处理)场景与功能、业务强相关,数据需要进行频繁的增删改查,这时比较适合使用行存储式。行存储的优势主要有两个方面:首先是点查性能好,在点查场景下可以直接索引到某行数据的元组位置;其次就是更新效率高,行存储在实时并发入库,并发更新方面依然有着比较大的优势。行执行引擎的关键就是:一次处理一行数据,即一tuple,适合数据频繁更新,增删改操作多,且查询结果涉及表的多列的场景。

2.行执行引擎组成

2.1 行执行框架

行执行引擎的执行基本单位是算子,查询计划是以树的形式存在的,算子是执行树上的每个节点。每个算子需要经历初始化,执行,清理的生命周期,执行时包括递归遍历计划树的各个节点,从计划树根节点开始,递归到叶节点来获取一个tuple,经过逐层节点算子的处理,返回一个结果tuple,直到再无tuple。整体算子的执行采用Piepline模式,一次一tuple,控制流从上到下,数据流由下到上,图示实线为控制流,虚线为数据流,使用上层来驱动下层。

控制流和数据流

2.2 行执行引擎算子

算子总共分为四类,扫描算子,控制算子,物化算子,连接算子等。对于分布式系统而言,还包括着stream算子等。

2.2.1 扫描算子

扫描算子用来扫描表中的数据,每次获取一条元组作为上层节点的输入, 存在于查询计划树的叶子节点,它不仅可以扫描表,还可以扫描函数的结果集、链表结构、子查询结果集。一些比较常见的扫描算子如表所示。

2.2.2 连接算子

连接算子对应了关系代数中的连接操作,以表 t1 join t2 为例,主要的集中连接类型如下:inner join、left join、right join、full join、semi join、 anti join,其实现方式包括Nestloop、HashJoin、MergeJoin;

三类连接算子的实现方式特点:

2.2.3 物化算子

物化算子是一类可缓存元组的节点。在执行过程中,很多扩展的物理操作符需要首先获取所有的元组才能进行操作(例如聚集函数操作、没有索引辅助的排序等),这是要用物化算子将元组缓存起来;

2.2.4 控制算子

控制算子是一类用于处理特殊情况的节点,用于实现特殊的执行流程。

2.2.5 其他算子

其他算子包括Stream算子,以及RemoteQuery等算子

Stream算子主要有三种类型:Gather stream、Broadcast stream、Redistribute stream

Gather算子: 每个源结点都将其数据发送给目标结点进行汇聚

gather算子

Broadcast stream: 由一个源节点将其数据发给N个目标节点进行运算

Redistrubute stream: 每个源节点将其数据根据连接条件计算Hash值,根据重新计算的Hash值进行分布,发给对应的目标节点

3. 执行框架总结

本文主要讲解了如下几个方面:

  • 大致介绍了GaussDB(DWS)行执行引擎在整个数据库系统中的位置;

  • 介绍了行执行引擎的框架;

  • 最后介绍了一些常见和常用的行执行引擎相关的算子。

文章转载自:华为云开发者联盟

原文链接:https://www.cnblogs.com/huaweiyun/p/18185668

体验地址:引迈 - JNPF快速开发平台_低代码开发平台_零代码开发平台_流程设计器_表单引擎_工作流引擎_软件架构

  • 16
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
gaussdb(dws) 是一个开源的分布式数据库管理系统,版本号为8.1.1。它是由华为公司开发的,旨在提供高性能和可靠性的数据存储和处理解决方案。 gaussdb(dws) 8.1.1 提供了一系列的功能和特性,使其成为一个强大的数据库系统。首先,它支持分布式部署,可以在多个服务器上进数据分片和数据复制,从而实现高可用性和容错性。其次,它具有强大的查询优化和执行引擎,能够高效地处理复杂的查询和分析任务。此外,它还具有高度可扩展的架构,可以轻松地扩展到大规模的数据集和用户访问量。 此外,gaussdb(dws) 8.1.1 还提供了丰富的数据管理和安全功能。它支持多种数据类型,包括文本、数值、日期和时间等,同时还支持复杂的数据结构和查询操作,如数组、JSON 和 GIS 空间数据类型。此外,它还具有灵活的访问控制和权限管理机制,以确保数据的安全性和完整性。 在性能方面,gaussdb(dws) 8.1.1 采用了先进的数据压缩和内存管理技术,以减少存储空间的占用和提高查询执行速度。它还具有强大的并发控制和事务管理机制,以支持高并发的数据访问和处理。 总而言之,gaussdb(dws) 8.1.1 是一个功能强大、性能高效的分布式数据库管理系统,它为用户提供了可靠的数据存储和处理解决方案。无论是在大规模企业应用场景下,还是在对数据存储和处理要求较高的领域,gaussdb(dws) 8.1.1 都能够满足用户的需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值