【CMU 15-445】Proj3 Query Execution

news2024/10/5 15:27:05

Query Execution

  • 通关记录
  • Task1 Access Method Executors
    • SeqScan
    • Insert
    • Update
    • Delete
    • IndexScan
    • Optimizing SeqScan to IndexScan
  • Task2 Aggregation & Join Executors
    • Aggregation
    • NextedLoopJoin
  • Task3 HashJoin Executor and Optimization
    • HashJoin
    • Optimizing NestedLoopJoin to HashJoin
  • Task4 Sort + Limit Executors + Window Functions + Top-N Optimization
    • Sort
    • Limit Executor
    • Top-N Optimization Rule

CMU-15445汇总
本文对应的project版本为CMU-Fall-2023的project3
由于Andy要求,本博客只提供思路,不会公开任何代码

通关记录

在这里插入图片描述

Task1 Access Method Executors

Task1涉及各种基本算子的实现。

SeqScan

顺序扫描算子非常简单,遍历表堆中的所有记录即可(使用MakeIterator方法),同时,可以将filter放到SeqScan中做,减少上层算子的计算时间。

Insert

插入算子直接调用InsertTuple方法即可,同时,需要遍历所有索引,插入新的索引键值对。

Update

更新算子需要根据plan的target_expressions进行新记录的构建,然后将表堆中的旧记录删除(设置tuple_meta的is_deleted字段),并插入新纪录,最后更新索引(也是删除旧索引项+插入新索引项)。

Delete

删除算子很简单,删除表堆中的记录并删除对应索引项。

IndexScan

索引扫描算子可以直接从索引中查找符合条件的记录(ScanKey)方法,遍历所有记录并返回即可。

Optimizing SeqScan to IndexScan

递归遍历计划树,将符合条件的SeqScan计划,转化为IndexScan计划即可。

Task2 Aggregation & Join Executors

Aggregation

聚合算子采用哈希表实现,在init阶段将所有的键值对构造好,然后逐一遍历返回即可。

NextedLoopJoin

嵌套循环连接算子也比较简单,就是直接双重循环,判断两边的记录是否满足连接条件即可。

Task3 HashJoin Executor and Optimization

HashJoin

使用右表的连接值作为key去构造哈希表,然后遍历左表,将左表的连接值作为key到哈希表中查找,构造新记录即可。

Optimizing NestedLoopJoin to HashJoin

简单的条件判断以及算子转换而已。

Task4 Sort + Limit Executors + Window Functions + Top-N Optimization

Sort

利用lambda函数+sort直接排序即可

Limit Executor

没啥难度,直接返回前几个记录而已。

Top-N Optimization Rule

将包含sort和limit的查询,优化为topN查询,采用大顶堆或小顶堆来优化查询效率即可。

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

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

相关文章

两台电脑如何建立局域网?三种简便方法推荐

方法一:使用网线直接连接 1、准备一根网线,长度不宜过长(建议不要超过80米,否则信号会衰减),确保两台电脑相邻或距离较近。 2、将网线的一头插入一台电脑的网口,另一头插入另一台电脑的网口。 …

MATLAB直方图有关函数的关系

histogram Histogram plot画直方图 histcounts 直方图 bin 计数 histcounts是histogram的主要计算函数。 discretize 将数据划分为 bin 或类别 histogram2 画二元直方图 histcounts2 二元直方图 bin 计数 hist和histc过时了。替换不建议使用的 hist 和 histc 实例 hist → \r…

26. 一个反射远照相物镜的设计

导论: 反摄远照相物镜是一类照相物镜的统称,他们的共同特点是有一个负光焦度的前组,和一个正光焦度的后组,至于前组和后组的具体结构,种类繁多。 反摄远物镜能同时实现大视场和大相对孔径,这类系统的长度…

工厂方法模式实战之某商场一次促销活动

目录 1.5.1、前言1.5.2、实战场景简介1.5.3、开发环境1.5.4、用传统的if-else语句实现1.5.4.1、工程结构1.5.4.2、if-else需求实现1.5.4.3、测试验证 1.5.5、工厂模式优化代码1.5.5.1、工程结构1.5.5.2、代码实现1.5.5.2.1、定义各种商品发放接口及接口实现1.5.5.2.2、定义工厂…

数据库管理-第205期 换个角度看23ai(20240617)

数据库管理205期 2024-06-17 数据库管理-第205期 换个角度看23ai(20240617)1 规范应用开发2 融合总结 数据库管理-第205期 换个角度看23ai(20240617) 作者:胖头鱼的鱼缸(尹海文) Oracle ACE Pro…

MES管理系统中的质量管理活动是什么

在制造业的广阔天地中,质量管理如同航船的指南针,指引着产品品质的航行方向。而随着科技的日新月异,MES管理系统在质量管理领域扮演着越来越重要的角色。MES管理系统不仅连接了企业的管理层与车间生产现场,更在质量管理的各个环节…

开源项目大合集(热门)

人不走空 🌈个人主页:人不走空 💖系列专栏:算法专题 ⏰诗词歌赋:斯是陋室,惟吾德馨 目录 🌈个人主页:人不走空 💖系列专栏:算法专题 ⏰诗词歌…

如何让AI 帮你生成 git 提交信息

在协同开发的项目中,我们肯定避免不了使用git提交代码,所以经常会看到了一些描述不清的提交信息。当遇到种情况时,我们也不必为此责怪开发人员,因为我们确实很难记住你在 git 提交时刚刚做了什么。 Nutlope / aicommits 一个使用 …

ABBYY Finereader 15中文版安装包下载及安装教程

​ABBYY FineReader 是一款功能强大的 OCR(Optical Character Recognition)软件,可以将扫描的文档转换为可编辑的文本文件。它不仅可以识别文本,还可以识别表格、图像和布局,使得文档的转换更加准确和方便。 安 装 包 …

图像的对比度和亮度

目标 访问像素值用0来初始化矩阵cv::saturate_cast像素转换提高一张图像的亮度 原理 图像处理 图像变换可以被视作两个步骤: 点操纵(像素转换)相邻区域转换(以面积为基础) 像素转换 在这种图像处理的转换过程中…

【电子实验4】TDA2030功率放大电路

🚩 WRITE IN FRONT 🚩 🔎 介绍:"謓泽"正在路上朝着"攻城狮"方向"前进四" 🔎🏅 荣誉:2021|2022年度博客之星物联网与嵌入式开发TOP5|TOP4、2021|2222年获评…

如何解决 torch.cuda.is_available()是False

目录 1. 问题2. 解决方法2.1 安装torch的CUDA版本2.1.1 查看安装的torch是什么版本2.1.2 下载GPU版本的torch 2.2 安装 NVIDIA CUDA2.2.1 下载CUDA Toolkit2.2.2 安装CUDA Toolkit 最终效果 1. 问题 在Python中,使用Pytorch时,往往会选择使用CUDA模块&a…

护眼灯对眼睛有伤害吗?千万要小心的行业四大弊端内幕

护眼灯,作为现代家居与办公环境中不可或缺的照明伴侣,因其普及性广受青睐。然而,随着大众对视觉健康意识的逐渐增强,一个疑问悄然滋生:护眼灯对眼睛有伤害吗?这一问题不仅触及到了人们对视觉健康的深层担忧…

【韩顺平零基础学java】第15章练习题

1 2. 使用方法 1.写方法 2.使用Test注解 3.点击左侧运行符号运行 3. User package com.hspedu.homework;/*** author 韩顺平* version 1.0* 该类包含:private成员变量(int类型) id,age;(String 类型&…

grid布局的各项css说明

还有place-self,相当于justify-self与align-selft的复合属性 还有order

慎投!新增1本中科院1区顶刊被“On Hold”

本周投稿推荐 SSCI • 中科院2区,6.0-7.0(录用友好) EI • 各领域沾边均可(2天录用) CNKI • 7天录用-检索(急录友好) SCI&EI • 4区生物医学类,0.5-1.0(录用…

集群初始配置

假设已经有三台或多台 Linux,可以是虚拟机或真实设备。如果希望使用这些 Linux 组成一个集群,并在上面运行一些分布式系统,可能需要如下操作。 1 设置静态IP 输入命令route -n打印路由表,可以查看网关地址。图形界面操作&#x…

压缩映射定理证明

收缩映射定理(又称Banach不动点定理)是一个重要的结果,特别是在分析和应用数学中。 定理(收缩映射定理):假设是一个从度量空间 (X,d) 到自身的函数,如果 是一个收缩映射,即存在常数 …

SwitchHosts 简明教程

转载请标明出处:https://blog.csdn.net/donkor_/article/details/139743047 文章目录 一、SwitchHosts 是什么二、功能特性三、安装四、使用4.1 本地添加host4.2 本地127.0.0.1添加指定IP 五、修改 hosts 后不生效 一、SwitchHosts 是什么 SwitchHosts 是一个管理 …

领夹麦克风哪个品牌音质最好?轻揭无线麦克风哪个品牌性价比高!

​随着短视频热潮的兴起,越来越多的人倾向于用vlog记录日常生活,同时借助短视频和直播平台开辟了副业。在这一过程中,麦克风在近两年内迅速发展,从最初的简单收音功能演变为拥有多样款式和功能,以满足视频创作的需求。…