论文研读 - share work - QPipe:一种并行流水线的查询执行引擎

news2024/11/29 3:59:23

QPipe:一种并行流水线的查询执行引擎

QPipe: A Simultaneously Pipelined Relational Query Engine

关系型数据库通常独立执行并发的查询,每个查询都需执行一系列相关算子。为了充分利用并发查询中的数据扫描与计算,现有研究提出了丰富的技术:从缓存磁盘页以构建物化视图到优化多查询。然而,现有研究所提出的思想本质上受现代以查询为中心的引擎设计哲学所限制。理想状态下,查询引擎应该主动协调并发查询中相同运算符的执行以充分利用内存及磁盘的共同访问和中间计算的共同结果。

本文引入on-demand simultaneous pipelining(osp,按需并行流水线),一种新的查询评估范式,用于并发查询执行时最大化共享数据。通过将操作符的结果并行传输到多个父节点,实现主动、动态操作符共享。本文提出QPipe,一个以操作为中心的新型引擎,支持OSP。每个关系操作符封装到一个微引擎中,该引擎为队列中的查询任务提供服务。TPC-H实验结果表明,构建到BerkeleyDB中的QPipe,比商业关系数据库性能高2倍。

背景

现代执行引擎中运行时共享受每个查询独立执行一组运算符的范例所限制,如果缓存和缓冲池提前回收数据页,则可能错过共享机会。Qpipe在运行时识别并利用共有子表达式,不会等待有足够的查询后才进行批量优化。

传统数据库查询引擎设计遵循“单个查询,多个算子的模型”,是以查询为中心。优化器生成的执行计划驱动查询执行的过程。查询计划是树结构,每个节点都是一个算子,每个叶子都是输入点(文件扫描或索引扫描)。

f839c14b7160143f6972c10d18af5a2e.png

上图通用执行引擎,由两个部件构成:查询执行环境和存储引擎。查询将请求分发给磁盘子系统(存储引擎),存储引擎通过一些算法决定哪些页该缓存哪些页该驱逐,以优化资源管理。所有操作都是再没有积累了解当前查询状态下执行的,传统引擎无法充分利用查询之间的数据个工作共享机会。

QPipe引擎

1)QPipe中每个算子被提升为独立的微引擎(uEngine)。

2)微引擎以包的形式接收请求,并从队列中取出为之服务。例如,Sort 微引擎仅接收一个表的排序请求。该请求必须指定对什么进行排序,结果需要放到哪个元组缓冲区。

3)一个查询将所有微引擎独立工作组合起来的方法是将一个微引擎的输出作为下一个的输入。因此在微引擎之间有生产者-消费者的关系。

4)QPipe的输入是预编译的查询计划。查询计划通过包分发器,将执行计划转换成包作为查询树的节点,并将他们分发给不同的微引擎。

5)每个微引擎都有一个队列来缓存即将到来的请求。

6)每个微引擎都有一个线程从队列中拿出一个包并进行处理。包主要指定输出和输出元组缓存和算子操作的参数(排序属性、谓词等)。微引擎并行执行该查询。评估模型类似基于Push的执行设计。每个算子独立产生元组直到填充满父节点的输入缓冲。如果一个算子比较慢,导致输出就会有很大延迟,然后中间缓冲就会调节数据流。

7)由于QPipe涉及多个本地线程池(每个微引擎一个),所以一个高效的调度策略就显得非常重要。我们使用两级调度方法。高级别上,调度器选择下一个运行的微引擎以及在哪个CPU上执行。每个微引擎内部,又有一个本地调度器,决定工作线程的调度。本文使用轮询的调度机制,每个微引擎固定数量CPU。操作系统为工作线程提供抢占式处理器共享。由于这个简单的策略保证了系统始终都在执行,所有查询的响应时间都很低。未来会研究自适应调度策略。

8)QPipe通过将相同性值的请求分组在一起,并使用专用微引擎处理每组类似的请求,从而可以实现比传统引擎更好的资源利用率。同样,当磁盘IO收到大量请求时,他性能会更好。

QPipe并行流水线

QPipe中一个查询包表示一个给定微引擎上需要执行的查询。每当一个新包进入微引擎队列后,我们都会扫描下这个队列检查下是否有可以共享的工作。这时对每个包的参数链表进行的快速检测(当查询传到包分发器时产生的包)。比较的结果是:是否存在一个匹配以及当前操作可以重用的阶段(一个排序的文件,读取排序的文件等)。每个微引擎采用不公的贡献机制,依赖于封装的关系操作(3.2节共享机会的描述)

每个微引擎都有2个部件:OSP协调器和死锁检测器。OSP协调器为新书举报连接到正在运行的查询的数据包上奠定基础,并使算子的输出同时pipeline到所有参与的查询中。OSP协调器处理增量请求,对原始请求的执行进行必要调整。

7cac37741d530786616d15db8feb4a1e.png

没有协调者时,Q2需要重复相同操作。而有协调者时,仅需将Q1的结果拷贝到Q2的结果缓冲中即可。此时形成一个生产者,多个消费者的关系。任何一个消费者比生产者慢时,所有查询最终都会调整成最慢消费者的处理速度。

参考

http://paragon.cs.northwestern.edu/papers/2006_QPipe_poster_ICDE.pdf

http://nms.csail.mit.edu/~stavros/pubs/demo_qpipe.pdf

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1055369.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

进程之间的通信方式(共享存储,消息传递,管道通信)

进程通信 进程间通信(Inter-Process Communication,IPC)是指两个进程之间产生数据交互。进程是分配系统资源的单位(包括内存地址空间),因此各进程拥有的内存地址空间相互独立。为了保证安全,一个进程不能直接访问另一…

计算机网络学习易错点

目录 概述 1.internet和Internet的区别 2.面向连接和无连接 3.不同的T 4.传输速率和传播速率 5.传播时延和传输时延(发送时延) 6.语法,语义和同步 一.物理层 1.传输媒体与物理层 2.同步通信和异步通信 3.位同步(比特同…

【算法分析与设计】贪心算法(下)

目录 一、单源最短路径1.1 算法基本思想1.2 算法设计思想1.3 算法的正确性和计算复杂性1.4 归纳证明思路1.5 归纳步骤证明 二、最小生成树2.1 最小生成树性质2.1.1 生成树的性质2.1.2 生成树性质的应用 2.2 Prim算法2.2.1 正确性证明2.2.2 归纳基础2.2.3 归纳步骤2.3 Kruskal算…

debian设置允许ssh连接

解决新debian系统安装后不能通过ssh连接的问题。 默认情况下,Debian系统不开启SSH远程登录,需要手动安装SSH软件包并设置开机启动。 > 设置允许root登录传送门:debian设置允许root登录 首先检查/etc/ssh/sshd_config文件是否存在。 注意…

TFT LCD刷新原理及LCD时序参数总结(LCD时序,写的挺好)

cd工作原理目前不了解,日后会在博客中添加这一部分的内容。 1.LCD工作原理[1] 我对LCD的工作原理也仅仅处在了解的地步,下面基于NXP公司对LCD工作原理介绍的ppt来学习一下。 LCD(liquid crystal display,液晶显示屏) 是由液晶段阵列组成,当…

【EasyPoi】SpringBoot使用EasyPoi自定义模版导出Excel

EasyPoi 官方文档&#xff1a;http://doc.wupaas.com/docs/easypoi Excel模版导出 引入依赖 <dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency…

newstarctf

wp web: 1.rce 可以发现这个变量名有下划线也有点。 $code$_POST[e_v.a.l]; 这时候如果直接按这个变量名来传参&#xff0c;php 是无法接收到这个值的&#xff0c;具体原因是 php 会自动把一些不合法的字符转化为下划线&#xff08;注&#xff1a;php8以下&#xff09;&am…

【论文极速读】IMAGEBIND —— 通过图片作为桥梁桥联多模态语义

【论文极速读】IMAGEBIND —— 通过图片作为桥梁桥联多模态语义 FesianXu 20230929 at Baidu Search Team 前言 当前大部分多模态工作都集中在图片-文本、视频-文本中&#xff0c;关于音频、深度图、热值图的工作则比较少&#xff0c;在IMAGEBIND中&#xff0c;作者提出了一种…

Neo4j最新安装教程(图文版)

目录 一、软件介绍 二、下载软件 1、官方下载 2、云盘下载 三、安装教程 1、首先配置Neo4j的环境变量 2、启动neo4j服务器 3、访问界面 一、软件介绍 官网地址&#xff1a;https://neo4j.com/ Neo4j是一个高性能、可扩展的图数据库管理系统。它专注于存储、查询和处理大…

Explain执行计划字段解释说明---ID字段说明

ID字段说明 1、select查询的序列号,包含一组数字&#xff0c;表示查询中执行select子句或操作表的顺序 2、ID的三种情况 &#xff08;1&#xff09;id相同&#xff0c;执行顺序由上至下。 &#xff08;2&#xff09;id不同&#xff0c;如果是子查询&#xff0c;id的序号会…

大数据Flink(九十四):DML:TopN 子句

文章目录 DML:TopN 子句 DML:TopN 子句 TopN 定义(支持 Batch\Streaming):TopN 其实就是对应到离线数仓中的 row_number(),可以使用 row_number() 对某一个分组的数据进行排序 应用场景

cesium 雷达扫描 (扫描线)

cesium 雷达扫描 (扫描线) 1、实现方法 图中的线使用polyline方法绘制,外面的圆圈是用ellipse方法绘制(当然也不指这一种方法),图中线的扫描转动效果是实时改变线的经纬度来实现(知道中心点经纬度、又已知方向和距离可以求出端点的经纬度)使用CallbackProperty方法来实…

数据结构与算法——18.avl树

这篇文章我们来看一下avl树 目录 1.概述 2.AVL树的实现 1.概述 我们前面讲了二叉搜索树&#xff0c;它是有一个key值&#xff0c;然后比父节点key值大的在左边&#xff0c;小的在右边。这样设计是为了便于查找。但是有一种极端的情况&#xff0c;就是所有的结点都在一边&am…

7.3 调用函数

前言&#xff1a; 思维导图&#xff1a; 7.3.1 函数调用的形式 我的笔记&#xff1a; 函数调用的形式 在C语言中&#xff0c;调用函数是一种常见的操作&#xff0c;主要有以下几种调用方式&#xff1a; 1. 函数调用语句 此时&#xff0c;函数调用独立存在&#xff0c;作为…

艺术表现形式

abstract expressionism 抽象表现主义 20世纪中期的一种艺术运动&#xff0c;包括多种风格和技巧&#xff0c;特别强调艺术家通过非传统和通常非具象的手段表达态度和情感的自由。 抽象表现主义用有力的笔触和滴落的颜料来表达情感和自发性。 简单地结合“abstract expression…

基于Java的服装销售平台设计与实现(源码+lw+部署文档+讲解等)

文章目录 前言具体实现截图论文参考详细视频演示为什么选择我自己的网站自己的小程序&#xff08;小蔡coding&#xff09;有保障的售后福利 代码参考源码获取 前言 &#x1f497;博主介绍&#xff1a;✌全网粉丝10W,CSDN特邀作者、博客专家、CSDN新星计划导师、全栈领域优质创作…

paddle2.3-基于联邦学习实现FedAVg算法-CNN

目录 1. 联邦学习介绍 2. 实验流程 3. 数据加载 4. 模型构建 5. 数据采样函数 6. 模型训练 1. 联邦学习介绍 联邦学习是一种分布式机器学习方法&#xff0c;中心节点为server&#xff08;服务器&#xff09;&#xff0c;各分支节点为本地的client&#xff08;设备&#…

【k8s】集群搭建篇

文章目录 搭建kubernetes集群kubeadm初始化操作安装软件(master、所有node节点)Kubernetes Master初始化Kubernetes Node加入集群部署 CNI 网络插件测试 kubernetes 集群停止服务并删除原来的配置 二进制搭建(单master集群)初始化操作部署etcd集群安装Docker部署master节点解压…

SpringBoot 如何使用 Spring Data MongoDB 访问 MongoDB

使用 Spring Boot 和 Spring Data MongoDB 访问 MongoDB 数据库 在现代应用程序开发中&#xff0c;许多应用都依赖于数据库来存储和检索数据。MongoDB 是一个流行的 NoSQL 数据库&#xff0c;而 Spring Boot 是一个广泛使用的 Java 开发框架。本文将介绍如何使用 Spring Boot …

28383-2012 卷筒料凹版印刷机 学习笔记

声明 本文是学习GB-T 28383-2012 卷筒料凹版印刷机. 而整理的学习笔记,分享出来希望更多人受益,如果存在侵权请及时联系我们 1 范围 本标准规定了卷筒料凹版印刷机的型式、基本参数、要求、试验方法、检验规则、标志、包装、运输与 贮存。 本标准适用于机组式的卷筒料凹版…