【CMU15-445 Part-13】Query Execution II

news2024/11/30 10:28:28

Part13-Query Execution II

talk about how to execute with multiple workers

TCO:Total Cost of Ownship

Parallel VS. Distributed

区分数据库系统的并行执行和分布式数据库系统的分布式执行

数据库通过分散multiple resources 来改善数据库某些方面的性能

Parallel DBMSs:

  • 一个系统上可用资源在物理意义上彼此临近
  • 可用资源之间通过高速的interconnect 来通讯。
  • 通信是被认为cheap and reliable

Distributed DBMSs:

  • 可用资源可以离得很远
  • 可用资源之间通过slower interconnect 来通信
  • 通讯代价和问题不可以忽视,是不可靠的互联

Process Model

如何组织系统来通过多个worker来处理并发请求,系统如何架构来支持多用户的并发请求。Worker就是DBMS执行任务返回结果的一部分。

Approach #1-Process per DBMS Worker

一个进程一个worker,依赖于OS的scheduler,使用shared-memory来利用全局数据结构(不会从磁盘中取一个page 同时在内存中该page有两份),一个进程crash不会影响整个系统。

Approach #2-Process Pool

仍然是一个worker是一个进程但是不会一一对应,有需求就从worker pool里面拿;重点是OS负责调度查询的执行,数据库管不了。

Approach #3-Thread per DBMS Worker

好处:上下文切换的代价小,不需要管理共享内存。

Scheduling

DBMS的dispatcher or coordinator决定怎么拆分任务,使用CPU core来执行,线程之间依赖关系,CPU core应该执行哪些任务,一个task 怎么存储输出。


Inter VS. Intra-Query Parallelism

Inter-Query Parallelism指的是同一时间执行多个不同的查询

Intra-Query Parallelism指的是将一个查询拆分更为多个子任务或者片段,在不同资源上同时并发执行这些任务。具体通过并行执行算子,算子之间的关系就是生产者消费者模式,对每一个关系模型算子都有并行算法,可以通过多线程获取centralized data structures或者分区来工作 9.46

Parallel Grace Hash Join

对bucket进行join,可以对相应的每一层分配一个worker来并行

Intra-Query Parallelism

Approach #1:Intra-operator parallelism(Horizontal)

把一个完整操作分成多个平行操作,数据分成多段,每一段的执行函数都一样,使用一个exchange operator来把这些结果组合到一起,在进行分段执行的地方放置Ex Op来合并结果,每个fragment都有一个scan operator 以及 filter operator,如下:

Untitled

  • Exchange Type #1 - Gather

    把不同worker线程执行任务得到的结果或者operator产生的输出进行合并,生成一个单一的输出结果到输出流。

  • Exchange Type #2 - Repartition

    shuffle,对多个输入流reorganize然后生成多个输出流

  • Exchange Type #3 - Distribute

    拿到一个输入流拆分成多个输出流

Untitled

Approach #2:Inter-operator parallelism(Vertical)

不同线程在同一时间执行不同的operator,自旋等待数据传入,读一波数据处理完如果需要再读一下波没有返回结果就等待。类似于生产者消费者模型,但是如果生成的tuple很多速度就会慢,因为生产者消费者的容器需要加锁进行读写。一个线程中任务高内聚,多个线程间低耦合

Untitled

Approach #3:Bushy parallelism

让不同worker在同一个时刻对一个查询计划的不同部分进行操作,依然使用ex op来再op之间移动数据,

Untitled

I/O Parallelism

对数据库系统的文件和数据进行拆分分散到存储设备上的不同位置上

  • Multiple Disks Per Database
  • One DB per Disk
  • One Relation per Disk
  • Split Relation across Multiple Disks

RAID:Redundant Arrays of Independent Disks 独立磁盘构成具有冗余能力的队列

思路是让多个存储设备以单个逻辑设备的形式供DB使用,

Multi-Disk Parallelism

通过配置OS或者硬件来横跨多个存储设备来存储DBMS的文件,可以通过stroage appliances 或者 RAID configuration,对DBMS 是透明的。

例子:一个DBMS有六个page,stripping 数据分条技术,mirror 磁盘镜像,在每个存储设备上保存一份该page的副本。

Untitled

Database Partitioning

把数据拆分成为不相交的子集然后分配给离散的磁盘。一个单个的逻辑表将表中的数据拆分成不相交的子集,把子集放在不同的存储设备上,进行管理

Vertical Partitioning垂直分区

垂直分区,列存

Untitled

Horizontal Partitioning水平分区

sharding

Untitled

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

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

相关文章

手动实现Transformer

Transformer和BERT可谓是LLM的基础模型,彻底搞懂极其必要。Transformer最初设想是作为文本翻译模型使用的,而BERT模型构建使用了Transformer的部分组件,如果理解了Transformer,则能很轻松地理解BERT。 一.Transformer模型架构 1…

css实现四角圆边框

摘要: 做大屏的项目时,遇到很多地方要用到不同尺寸的盒子需要圆角的效果,所以不可能要求ui弄那么多图片的,并且那么多图片加载速度很慢的,比较臃肿,大屏要求的就是流畅,所以这用css加载很快的&a…

基于Java的旅游管理系统设计与实现(源码+lw+部署文档+讲解等)

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

Linux系统下git相关使用

目录 git相关指令以及使用 什么是git Linux系统git功能的配置 关于码云的注册以及仓库的创建 git的相关指令 git clone 代码仓库地址 git add [文件名] git commit [文件名] -m "文件提交信息" git push git status 情况1:存在文件可以add 情况2&#xff…

KNN(下):数据分析 | 数据挖掘 | 十大算法之一

⭐️⭐️⭐️⭐️⭐️欢迎来到我的博客⭐️⭐️⭐️⭐️⭐️ 🐴作者:秋无之地 🐴简介:CSDN爬虫、后端、大数据领域创作者。目前从事python爬虫、后端和大数据等相关工作,主要擅长领域有:爬虫、后端、大数据…

025 - STM32学习笔记 - 液晶屏控制(二) - 代码实现

025- STM32学习笔记 - 液晶屏控制(二) - 代码实现 好久没更新学习笔记了,最近工作上的事情太多了,趁着国庆中秋,多更新一点看看。 上节学习了关于LTDC与DMA2D以及显示屏的相关知识点,这节开始实操&#xf…

[谷粒商城笔记]08、环境-linux安装docker

1.查看是否已安装docker列表 yum list installed | grep docker 如果没有结果,则说明没有安装docker,我们就可以直接安装了。 2.安装docker: yum -y install docker 如果不是root账号,使用 sudo 以管理员身份运行 sudo yum -y install …

CentOS 7 安装 MySQL5.7

CentOS 7 安装 MySQL5.7 安装wget: yum -y install wget进入/usr/local/下: cd /usr/local/新建mysqlrpm文件夹: mkdir mysqlrpm进入mysqlrpm文件夹下: cd /usr/local/mysqlrpm/下载mysql包安装源: wget http://…

MySQL单表查询与多表查询

目录 一、单表查询 ​编辑 1、显示所有职工的基本信息。 ​编辑2、查询所有职工所属部门的部门号,不显示重复的部门号。 ​编辑3、求出所有职工的人数。 4、列出最高工和最低工资。 ​编辑5、列出职工的平均工资和总工资。 ​编辑6、创建一个只有职…

FreeRTOS两个死机原因(中断调用接口异常)【杂记】

1、中断回调函数中没有使用中断级API (xxFromISR) 函数 xSemaphoreGiveFromISR(uart_busy,&HighterTask);----正确 xSemaphoreGive(uart_busy);-----错误2、比configMAX_SYSCALL_INTERRUPT_PRIORITY优先级高的中断函数中使用了FreeRTOS的函数 3、临界代码保护后不可调用os…

安全基础 --- MySQL数据库的《锁》解析

MySQL的ACID (1)ACID是衡量事务的四个特性 原子性(Atomicity,或称不可分割性)一致性(Consistency)隔离性(Isolation)持久性(Durability) &…

(一)TinyWebServer的环境配置与运行

Linux下C轻量级Web服务器,项目来源于:TinyWebServer 配置环境(为下载代码,编译运行做准备) 1. 安装VMware VMware官网 选择产品,点击Workstation Pro 下载试用版(注:需要在官网注册…

Java自学(三)面向对象编程

目录 什么是面向对象 举例 this关键字和构造器 实体类 电影小案例 什么是面向对象 我们日常生活中谈到一个事物,总会描述它的性质与行为,这个事物也就是 ”对象”。比如一个学生对象,他的属性有姓名、学号、成绩......他的行为有上课、…

【C++】C++模板进阶 —— 非类型模板参数、模板的特化以及模板的分离编译

​ ​📝个人主页:Sherry的成长之路 🏠学习社区:Sherry的成长之路(个人社区) 📖专栏链接:C学习 🎯长路漫漫浩浩,万事皆有期待 上一篇博客:【C】C多…

史玉柱复出一年:巨人股权第三次被冻结,力推AI+游戏

大数据产业创新服务媒体 ——聚焦数据 改变商业 一则股权冻结信息,又一次将复出一年的史玉柱推上风口浪尖。 天眼查APP显示,巨人投资近日新增一则股权冻结信息,被执行人为史玉柱,冻结股权数额1.14亿元,冻结期限为三年…

Visual Studio 中将TAB设置为空格

将TAB设置为空格的原因很多,其中一点是为了统一不同编译器对TAB的解释,防止代码风格在不同编译器下不一致等。 在菜单中选择: 工具-->选项-->文本编辑器--->所有语言-->制表符 在窗口中选择,制表符大小和缩进大小都选为4&#xf…

【从入门到起飞】JavaSE—Stream流

🎊专栏【JavaSE】 🍔喜欢的诗句:更喜岷山千里雪 三军过后尽开颜。 🎆音乐分享【如愿】 🥰欢迎并且感谢大家指出我的问题 文章目录 🍔Stream流的作用🍔Stream流的使用步骤🎄获取Strea…

机器人过程自动化(RPA)入门 7. 处理用户事件和助手机器人

在UiPath中,有两种类型的Robot用于自动化任何流程。一个是后台机器人,它在后台工作。它独立工作,这意味着它不需要用户的输入或任何用户交互。另一个是前台机器人,也被称为助理机器人。 本章介绍前台机器人。在这里,我们将了解自动化过程中通过简单按键、单击鼠标等触发事…

代码随想录算法训练营第四十六天 | 动态规划 part 8 | 139.单词拆分、多重背包、背包问题总结

目录 139.单词拆分思路代码 多重背包背包问题总结 139.单词拆分 Leetcode 思路 dp[i] : 字符串长度为i的话,dp[i]为true,表示可以拆分为一个或多个在字典中出现的单词。如果确定dp[j] 是true,且 [j, i] 这个区间的子串出现在字典里&#xf…

仿真数据检查器如何比较数据

可以定制仿真数据检查器比较过程,以多种方式满足您的需求。在比较各运行时,仿真数据检查器会执行以下操作: 根据对齐设置,对齐基线运行和比较项运行中的信号对组。 仿真数据检查器不会比较无法对齐的信号。 根据指定的同步方法同…