当前位置: 首页 > news >正文

【CMU 15-445】Lecture 12: Query Execution I 学习笔记

Query Execution I

  • Processing Models
    • Iterator Model
    • Materialization Model
    • Vectorization Model
  • Access Methods
    • Sequential Scan
    • Index Scan
  • Modification Queries
    • Halloween Problem

本节课主要介绍SQL语句执行的相关机制。

Processing Models

首先是处理模型,它定义了数据库系统执行查询计划的模式。常见的模型有以下三种:

  • Iterator Model
  • Materialization Model
  • Vectorized Model

Iterator Model

在迭代器模型中,每个算子由Open()、Next()和Close()三个函数组成。Open()与Close()分别代表计算的开始与停止,Next()表示该算子计算结果中的下一条记录。当Next()函数被调用时,算子将进行计算并返回下一条记录。在迭代器模型中,结果中的记录是一条一条产生的,这对带有LIMIT关键字的查询十分友好,方便控制输出的记录数量。
在这里插入图片描述

Materialization Model

物化模型与迭代器模型截然不同,每个算子会将其输出打包起来(作为临时关系),作为其后继算子的输入或者最终结果。在物化模型中,每个算子的输出记录一次性产生,并输送给后续算子使用。该模型比较适合OLTP系统,因为不会产生太大的中间结果。
在这里插入图片描述

Vectorization Model

向量化模型结合了物化模型与迭代器模型的特点,每次处理返回一定量的记录,也称为batch Model。该模型适合OLAP数据库,使得中间结果不需要溢出到磁盘,也可以减少Next函数的调用次数。
在这里插入图片描述

Access Methods

在执行模型的叶子节点处,需要进行数据的访问,一般有两种方式:

  • from table
  • from index

Sequential Scan

从table中进行顺序的访问数据通常效率低下,需要一些优化,在之前的章节中已经介绍过许多优化了,这里重点介绍一个Zone Map的优化。思想很简单,就是对每一页数据预处理出一些聚合属性,比如MIN、MAX等等,加速聚合查询。
在这里插入图片描述

Index Scan

通过索引的访问分为单索引与多索引。
单索引需要考虑不同场景下所用的索引属性,如下图所示。
在这里插入图片描述
多索引则根据查询条件,在多个索引上查询结果并将结果集合做并集或者交集。
在这里插入图片描述

Modification Queries

Halloween Problem

当涉及UPDATE查询时,由于UPDATE可能使得记录的物理位置发生改变,导致一个记录被更新两次。这个问题是在万圣节发现的,因此称为万圣节问题。
解决思路比较简单,在更新过程中维护已经更新过的记录ID即可。

http://www.lryc.cn/news/262395.html

相关文章:

  • 低代码开发平台的优势及应用场景分析
  • ES常见查询总结
  • Spring Boot Docker Compose 支持中文文档
  • 智慧城市/一网统管建设:人员危险行为检测算法,为城市安全保驾护航
  • C语言:求和1+1/2-1/3+1/4-1/5+……-1/99+1/100
  • 学习什么知识不会过时
  • C# WPF上位机开发(ExtendedWPFToolkit扩展包使用)
  • 【IOS开发】传感器 SensorKit
  • 【C++】封装:练习案例-点和圆的关系
  • 【vue】正则表达式限制input的输入:
  • 异步导入中使用SecurityUtils.getSubject().getPrincipal()获取LoginUser对象导致的缓存删除失败问题
  • 大数据机器学习深度解读决策树算法:技术全解与案例实战
  • 【开源Mongdb驱动】SpringBoot+Mybatis+Mongdb融合使用教程
  • freeRTOS使用
  • 基于vue的线上点餐系统论文
  • 【Windows】windows11右键默认显示更多选项的办法
  • 推荐使用过很好用的api,含免费次数
  • QT最大线程并发
  • 在金属/绝缘体/p-GaN栅极高电子迁移率晶体管中同时实现大的栅压摆幅和增强的阈值电压稳定性
  • Redis第1讲——入门简介
  • 数据科学知识库
  • 设计模式——责任链模式(行为模式)
  • 【谭浩强C语言:前八章编程题(多解)】
  • 程序人生15年人生感悟
  • React与AJAX
  • C++ STL泛型算法
  • 使用OpenSSL生成PKCS#12格式的证书和私钥
  • 超详细 | 哈里斯鹰优化算法原理、实现及其改进与利用(Matlab/Python)
  • git 切换远程地址分支 推送到指定地址分支 版本回退
  • YOLOv3-YOLOv8的一些总结