首页 > 其他分享 >cmu15545笔记-查询执行(Query Excution)

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

时间:2024-11-18 12:07:38浏览次数:1  
标签:结点 Scan 索引 Excution 求值 Query Model 执行 cmu15545

目录

执行模型

执行模型(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

标签:结点,Scan,索引,Excution,求值,Query,Model,执行,cmu15545
From: https://www.cnblogs.com/timothy020/p/18552305

相关文章

  • JS学习日记(jQuery库)
      前言今天先更新jQuery库的介绍,它是一个用来帮助快速开发的工具介绍jQuery是一个快速,小型且功能丰富的JavaScript库,jQuery设计宗旨是“writeless,domore”,即倡导写更少的代码,做更多的事,它封装JavaScript常用的功能代码,提供一种简便的方式进行使用,大大提高了开发效率,jQ......
  • 用jquery写一个简单的计算器
    闲来无事,练练手样式比较随意,效果图如下:HTML部分<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><title>计算器</title><linkrel="stylesheet"type="text/css"href="i......
  • Android Framework AMS(15)ContentProvider分析-2(getContentResolver及ContentResolver
    该系列文章总纲链接:专题总纲目录AndroidFramework总纲本章关键点总结&说明:说明:本章节主要解读ContentProvider组件的基本知识。关注思维导图中左上侧部分即可。有了前面activity组件分析、service组件分析、广播组件分析、ContentProvider组件的基本流程分析、基于此......
  • cmu15545笔记-Join算法(Join Algorithms)
    目录OverviewNestedLoopJoinNaïveBlockIndexSort-MergeJoinHashJoinSimpleHashJoinPartitionHashJoin总结Overview输出形式:早物化与晚物化(OLAP一般都是晚物化)代价分析:一般用IO次数计算(最终结果可能落盘,也可能不落盘,所以我们只计算输出结果之前的IO次数)。Join左边称为......
  • PowerQuery 工具1
    PowerQuery工具初识应用场景:在做数据透视表的时候,要求数据源是规范的,即规范的日期,规范的数值类型,规范的文本类型……,而且数据源每次跟新,我们都要进行同样的操作,为了减少重复性工作,我们需要认识PowerQuery工具用来整理不规范的数据。具体操作新建excel表格,并重命名——打......
  • cmu15545笔记-排序和聚合算法(Sorting&Aggregation Algorithms)
    目录概述排序堆排序外部归并排序使用索引聚合操作排序聚合哈希聚合概述本节和下一节讨论具体的操作算子,包括排序,聚合,Join等。排序为什么需要排序操作:关系型数据库是无序的,但是使用时往往需要顺序数据(OrderedBy,GroupBy,Distinct)。主要矛盾:磁盘很大:要排序的数据集很大,内......
  • cmu15545-索引并发控制(Concurrent Indexes)
    目录OverviewLock和Latch辨析设计目标大致分类HashTableLatchesPageLatchesSlotLatchesB+TreeLatches并发问题LatchCrabbing/CoupingOptimisticCoupling(乐观锁)LeafNodeScanOverviewLock和Latch辨析Lock:抽象的,逻辑的,整体统筹Latch:具体的,原语性的,自我管理本节主要探......
  • cmu15545-数据访问方式:B+树(B+Tree)
    目录基本概念基于磁盘的B+树查询与索引设计选择结点大小(NodeSize)合并阈值(MergeThredshold)变长键(Variable-lengthKeys)结点内部搜索(Intra-NodeSearch)优化手段PointerSwizzlingBε-treesBulkInsertPrefixCompressionDeduplicationSuffixTruncation基本概念基于磁盘的B+树......
  • 探索jQuery与原生JavaScript:事件绑定的比较
    探索jQuery与原生JavaScript:事件绑定的比较在现代网页开发中,事件处理是实现用户交互的关键部分。开发者可以选择使用原生JavaScript或jQuery来绑定事件。本文将通过一个简单的示例,比较这两种方法在事件绑定上的不同,并探讨它们的优缺点。事件绑定基础事件绑定是将事件监听......
  • Jquery入门系列2---层次选择器
    上节课讲了基础选择器,我们来回顾一下,基础选择器包括类选择器,id选择器,元素选择器,以及这几种混和在一块的用法。今天我们来讲层次选择器。何为层次选择器呢?如果我们想通过DOM元素之间的层次关系来获取特定元素,比如后代元素,子元素,相邻元素,兄弟元素等,就需要层次选择器,下面我把层......