【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.hqwc.cn/news/282521.html

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

相关文章

单机架构到分布式架构的演变

目录 1.单机架构 2.应用数据分离架构 3.应用服务集群架构 4.读写分离 / 主从分离架构 5.引入缓存 —— 冷热分离架构 6.垂直分库 7.业务拆分 —— 微服务 8.容器化引入——容器编排架构 总结 1.单机架构 初期,我们需要利用我们精干的技术团队,快…

SpringIOC之PropertySource

博主介绍:✌全网粉丝5W+,全栈开发工程师,从事多年软件开发,在大厂呆过。持有软件中级、六级等证书。可提供微服务项目搭建与毕业项目实战,博主也曾写过优秀论文,查重率极低,在这方面有丰富的经验✌ 博主作品:《Java项目案例》主要基于SpringBoot+MyBatis/MyBatis-plus+…

vue3中ref及reactive的说明

目录 1.响应式说明 2.vue3的ref及reactive的使用 3.reactive响应式失效问题 4.总结 1.响应式说明 vue的响应式是vue框架中的核心概念之一,它是指当数据发生变化时,vue能够自动更新视图。vue2的响应式是基于Object.defineProperty进行实现的。 当你把…

WebLangChain_ChatGLM:结合 WebLangChain 和 ChatGLM3 的中文 RAG 系统

WebLangChain_ChatGLM 介绍 本文将详细介绍基于网络检索信息的检索增强生成系统,即 WebLangChain。通过整合 LangChain,成功将大型语言模型与最受欢迎的外部知识库之一——互联网紧密结合。鉴于中文社区中大型语言模型的蓬勃发展,有许多可供利…

windows下使用logstash同步跨网络集群的数据

我们在开发环境过程中,可能会遇到这样的场景。我们可以通过VPN访问远端的机房。有可能还要跨机房访问。这篇文章演示使用logstash,在windows上,去同步跨网络环境的不同机房之间的数据。 此方式受网络限制。适合同步小规模数据。 下载logstash…

C# DotNetCore AOP简单实现

背景 实际开发中业务和日志尽量不要相互干扰嵌套,否则很难维护和调试。 示例 using System.Reflection;namespace CSharpLearn {internal class Program{static void Main(){int age 25;string name "bingling";Person person new(age, name);Conso…

Android Studio好用的插件推荐

目录 一、插件推荐 二、如何下载 1.点击File—>Settings ​2.点击Plugins然后进行搜索下载 三、Android Studio 模板 一、插件推荐 这个插件可以为您自动生成Parcelable代码。Parcelable是一种用于在Android组件之间传递自定义对象的机制,但手动编写Parcela…

dcoker-compose一键部署EFAK —— 筑梦之路

简介 EFAK(Eagle For Apache Kafka,以前称为 Kafka Eagle)是一款由国内公司开源的Kafka集群监控系统,可以用来监视kafka集群的broker状态、Topic信息、IO、内存、consumer线程、偏移量等信息,并进行可视化图表展示。独…

力扣刷题-二叉树-路径总和

112 路径总和 给定一个二叉树和一个目标和,判断该树中是否存在根节点到叶子节点的路径,这条路径上所有节点值相加等于目标和。 说明: 叶子节点是指没有子节点的节点。 示例: 给定如下二叉树,以及目标和 sum 22, 返回 true, 因为…

如何将数据库导入MySQL的办法

在电脑cmd终端进行导入 首先找到MySQL中bin的位置 第一步:找到MySQL 第二步:进入MySQL 第三步:打开bin 第四步:输入cmd进入终端 第五步: 输入mysql -uroot -p 然后会弹出enter password: 输入你的密码…

记一次挖矿病毒的溯源

ps:因为项目保密的原因部分的截图是自己在本地的环境复现。 1. 起因 客户打电话过来说,公司web服务异常卡顿。起初以为是web服务缓存过多导致,重启几次无果后觉得可能是受到了攻击。起初以为是ddos攻击,然后去查看web服务器管理…

基于ssm日用品网站设计论文

摘 要 现代经济快节奏发展以及不断完善升级的信息化技术,让传统数据信息的管理升级为软件存储,归纳,集中处理数据信息的管理方式。本日用品网站就是在这样的大环境下诞生,其可以帮助管理者在短时间内处理完毕庞大的数据信息&…