cmu15545笔记-查询执行(Query Excution)Eu

news/2024/11/18 14:05:03/文章来源:https://www.cnblogs.com/westworldss/p/18552450

目录* 执行模型

  • Iterator Model
  • Materialization Model
  • Vectoriazation Model
  • 对比
  • 数据访问方式:豆荚加速器
    • Sequential Scan
    • Index Scan
    • Multi-Index Scan
  • Halloween Problem
  • 表达式求值

执行模型

执行模型(Processing Model)定义了数据库系统如何执行一个查询计划。

Iterator Model

基本思想:采用树形结构组织操作符,然后中序遍历执行整棵树,最终根结点的输出就是整个查询计划的结果。

每个操作符(Operator)实现如下函数:

  • Next()
    • 返回值:一个tuple或者EOF。
    • 执行流程:循环调用孩子结点的Next()函数。
  • Open()Close():类似于构造和析构函数。

image-20241118105113714

输出从底部向顶部(Bottom-To-Top)汇聚,且支持流式操作,所以又称为Valcano Model,Pipeline Model。

Materialization Model

基本思想:操作符不是一次返回一个数据,暂存下所有数据,一次返回给父结点。

相比于Iterator Model,减少了函数调用开销,但是中间结果可能要暂存磁盘,IO开销大。

image-20241118105733041

可以向下传递一些暗示(hint),如Limit,避免扫描过多的数据。

更适用于OLTP而不是OLAP。

Vectoriazation Model

基本思想:操作符返回一批数据。

结合了Iterator Model和Materialization Model的优势,既减少了函数调用,中间结果又不至于过大。

可以采用SIMD指令加速批数据的处理。

image-20241118110928540

对比

特性 Iterator Model Materialization Model Vectorization Model
数据处理单位 单条记录(tuple-at-a-time) 整个中间结果(table-at-a-time) 批量记录(vector/batch-at-a-time)
性能 函数调用开销高,效率低 延迟高,内存/I/O 开销大 函数调用开销低,SIMD 加速性能优异
内存使用 内存需求低 内存需求高 中等
I/O 开销 中等
缓存利用率
复杂性 实现简单 中等 实现复杂
适用场景 小型数据集,流式处理 中间结果复用的复杂查询 大型数据集,需高性能计算的场景

数据访问方式

主要有三种数据访问方式:

  1. 全表扫描(Sequential Scan)
  2. 索引扫描(Index Scan)
  3. 多索引扫描(Multi-Index Scan)

Sequential Scan

全表扫描的优化手段:

image-20241118113337122

Data Skipping方法:

  1. 只需要大致结果:采样估计。
  2. 精确结果:Zone Map

image-20241118113508953

Zone Map基本思想:化整为零,提前对数据页进行聚合。

执行 Select * From table Where val > 600时,下面的页可以直接跳过。

image-20241118113722074

Index Scan

如何确定使用哪个索引:数据分布。

image-20241118114047331

Multi-Index Scan

基本思想:根据每个索引上的谓词,独立找到满足条件的数据记录(Record),然后根据连接谓词进行操作(并集,交集,差集等)。

image-20241118114343292

Halloween Problem

对于UPDATE语句,需要追踪更新过的语句,否则会出现级联更新的问题。

image-20241118114850271

<999, Andy>执行更新,走索引扫描:

  1. 移除索引
  2. 更新Tuple,<1099, Andy>
  3. 插入索引
  4. (约束检查)

此时,如果不对<1099, Andy>进行标记,他满足Where子句,会被重新更新一次。

表达式求值

基本思想:采用树形结构,构建表达式树,用中序遍历方式执行所有求值动作,根结点的求值结果就是最终值。

image-20241118115507962

数据库中哪些地方采用了树结构:

  • B+树:存储。
  • 树形结构+中序遍历求值:查询计划,表达式求值。

优化手段:JIT Compilatoin。将热点表达式计算结点视为函数,编译为内联机器码,而不是每次都遍历结点。

image-20241118120356183

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

100 款支持 .NET 多版本的强大 WPF 控件库

前言 推荐一款集成了超过100款控件的流行 XAML 控件库,同时提供了一系列常用的 .NET 帮助类-CookPopularUI。它可以简化开发流程,让我们能够更加专注于核心业务逻辑的实现。 让我们一起学习如何使用 CookPopularUI,并详细了解其提供的丰富控件内容。 项目介绍 CookPopularUI…

广东电子MES系统SMT生产管理软件系统特点

电子mes系统SMT(表面贴装技术)生产管理软件系统的特点可以归纳如下: 实时性与准确性:SMT MES系统能够实时监控生产过程中的各个环节,确保生产过程的顺利进行。系统对生产过程中的数据进行准确采集和处理,保证了数据的真实性和可靠性。集成性与灵活性:SMT MES系统可以实现…

Avalonia使用

准备工作VS2022专业版 注意:如果需要嵌入主窗体中,那么那么一定要创建控件视图,我使用窗体视图嵌入失败了。 创建好这运行测试,必须运行成功。 (当前第一集 创建项目 下一集 创建登录窗体)

PowerQuery 工具2

PowerQuery 工具2 引用数据的两种常用方式方式1 由外部链接创建数据透视表 具体操作请参考PowerQuery 工具1 - 一只小小小飞猪 - 博客园,这里需要注意,如果给的数据源不存在不规范的类型,请直接跳过修改过程,直接在首页——关闭并上载至优点: 适用于原数据所在文件夹路径不…

Electron框架使用vue开发跨平台桌面工具应用-后台日志发送到前台和执行导入ZIP

一、后台日志发送到前台首先在preload.js里面注册回调因为需要主窗口给vue页面发送,需要把窗口管理起来,不能直接写在backgroud.js里面。需要暴露出来所以编写了windowManager.js// windowManager.js let mainWindow = null;// 设置 mainWindow export function setMainWindo…

强化学习理论-第5课-蒙特卡洛方法

之前的章节都是基于model base,这节是model free的方法。 1. model-base to model-free:2. 计算\(q_{\pi k}:\)3. MC base algorithm:step 1和model base是不一样的,后面的步骤是一样的。4. MC exploring starts算法:

Charles抓取不到浏览器请求(macOS)解决方案

一.Charles charles抓包工具,通常使用默认的端口号: http:8888 https:8443 在安装好Charles后,默认情况下http代理服务器运行在8888端口,https服务器运行在8443端口 二.解决方案: 1.先把证书安装上下载证书后,打开macOS-【钥匙串访问】,选择证书,右键【显示简介】--【…

打工人提效必备!4款好用的Win电脑效率工具

今天来给大家分享 4 款我换了 5 台电脑都一定会安装的效率神器软件,每一款都能让你的办公、学习效率大幅提升! 1、Everything 这是一款文件搜索神器!相信大家都有过在电脑里找文件找得焦头烂额的经历吧?Everything 就能完美解决这个问题。 它的搜索速度超快,几乎是秒出结果…

门控时钟-无毛刺的时钟切换

[图片]一、问题 假设存在这样的时钟控制模型:CLK1、CLK2以及系统时钟的频率与相位均不一致,我们希望在clk_sel=1时,输出CLK1,反之输出CLK2,CLK_SEL可以由系统时钟驱动,也可以由组合逻辑驱动。那么在这种情况下就会出现以下的“毛刺”问题:可以看到,在CLK_SEL的交界处,非…

vs code 提示图标含义

图标姓名符号类型方法和函数 method,,function​constructor变量 variable字段 field类型参数 typeParameter常量 constant课程 class接口 interface结构 struct活动 event运算符 operator模块 module属性和特性 property值和枚举 value,enum参考 reference关键词 keyword文…

Windows右键--新建文本创建快捷键

前言全局说明Windows右键--新建文本创建快捷键,中文版默认不带创建快捷键,而英文版带,一、说明 环境: Windows 7 旗舰版二、中文版系统 2.1 增加快捷键 打开注册表,路径: HKEY_CLASSES_ROOT\Local Settings\MuiCache\10B\AAF68885修改: 文本文档 为 文本文档(&T)使用…