首页 > 其他分享 >CMU15-445 Project3 Query Execution心得

CMU15-445 Project3 Query Execution心得

时间:2023-06-14 19:47:07浏览次数:60  
标签:__ tuple 445 右表 mock Query INTEGER table CMU15

Project3 Query Execution 心得

一、概述

首先要说:这个 project很有趣很硬核!从这个 project 开始才感觉自己在数据库方面真正成长了!

第一个 project :buffer pool manager 相对独立且简单,说白了就是使用 LRU-K 算法维护一个 page 数组,2022 fall 又加了一点内容:使用可扩展哈希来将对外暴露的 page_id数组下标映射起来。 2023 sping 又添加了 COW 的功能,不过 MITOS 已经写过相关 lab 了,也不眼馋了。

第二个 project 虽然烧脑,但是更加独立,有种 干货是有但 trick 更多的意味(个人感觉,手写 b+tree有一点浪费时间)。 虽然对 b+tree 有了全面的认识,但除了知道这是数据库的存储引擎外,和 bustub 也没有更多的互动。

但是第三个 project!我太喜欢了!这才是学数据库的感觉!太爽了!大量的源码阅读带来极致的好奇心的满足,如果说前两个 project 都是数据库的组件,这个 project 开始,终于要从宏观的角度观察数据库了!

同时想要独立完成 project 的同学不能心急,我自己的经验是:如果是第一次接触 project3 的内容,至少先沉下心来读 +调试 10 小时以上的源码,才有思路动手开始写,不然直接上手就是浪费时间或者糊里糊涂抄答案,没有任何意义。

最后这篇博客有两个目的:

  1. 记录我的学习心得,而不是project 的答案,我自己在开始做这个 project 时最大的难点是有一种“有劲没处使”的感觉,即我不怕智力挑战,但是怕的是我连怎么开始这个挑战都不明白,所以墙裂建议大家一定要先去读源码、跟源码!
  2. (以我自己微薄的力量尽可能地)受人以渔,所以会记录我自己怎么读源码怎么调试 bug

二、写的很好的相关博客

https://blog.eleven.wiki/posts/cmu15-445-project3-query-execution/:这位博主对表结构做了很详细的分析,同时对于每种算子的实现也做了比详细的说明

https://blog.csdn.net/Kprogram/article/details/125837906 :这位博主对源码的分析比较多

https://zhuanlan.zhihu.com/p/570917775:迟先生(bustub 源码重要贡献者)对 bustub 的说明,建议自己读完源码之后有了自己的感悟再来看这篇文章,才能有更深的体会

三、如何读 bustub源码

最好的方式就是跟一个 sql 语句的执行过程:

建议使用 clion在 tools/shell.cpp 中使用 debug 模式进行调试,如果使用 CLion,记得加参数:--disable-tty,它的含义是含义是禁用终端窗口(TTY)。这意味着在执行命令时,不会弹出一个新的终端窗口,而是在 CLion 的控制台输出中直接显示命令的结果。这个选项可以避免终端窗口的干扰。

image-20230608112446412

比如我要跟一个 insert 语句的执行过程:

先执行建表语句 create table t1(v1 int, v2 varchar(128), v3 int);

然后执行insert into t1 values (0, '

标签:__,tuple,445,右表,mock,Query,INTEGER,table,CMU15
From: https://www.cnblogs.com/looking-for-zihuatanejo/p/17481180.html

相关文章

  • AtCoder Beginner Contest 223 H Xor Query
    洛谷传送门AtCoder传送门考虑一个无脑做法:线段树维护区间线性基。时间复杂度是\(O(m\logn\log^2V)\),过于优秀以至于无法接受。事实上我们并不需要维护区间线性基,因为不带修。考虑“可持久化线性基”,开\(n\)个线性基,第\(i\)个维护前缀\([1,i]\)的数。并且插入线性......
  • jqtreetable jquery-treeview
    jqtreetable[img]http://dl.iteye.com/upload/attachment/466717/80fc34ec-ed82-3c04-b2f4-5de688bbf990.jpg[/img]jquery-treeview[img]http://dl.iteye.com/upload/attachment/466715/3c0521cb-37e0-3fc6-8dfc-f438b48e8569.jpg[/img]......
  • 最新jQuery引用google地址外部文件(jquery 1.2.6至jquery1.7.2)
    评:1.很多网站都是使用这种方式引入,客户的浏览器可能已经缓存过了jquery。可以直接调用本地的,速度更快…2.Googlecode使用了cdn技术在很多地方有节点服务器,加载jquery时绝对不会比在你服务器上加载慢,本地服务器除外:)3.可以节省服务器流量,降低服务器带宽压力可以使用......
  • jquery获取radio选中的值
    radio 1.获取选中值$('input:radio:checked').val();$("input[type='radio']:checked").val();$("input[name='rd']:checked").val(); 参考:https://www.jb51.net/article/154831.htm ......
  • [GPT] jquery chosen插件选择的多个元素是逗号分隔的,怎么设置成其它分隔符号 ?
     如果你想要在jQueryChosen插件中使用其它分隔符号,可以通过以下方式实现: 1.设置delimiter选项为一个包含所需分隔符的字符串。$(".chosen-select").chosen({delimiter:";"});在这个例子中,我们将分隔符设置为分号;。 2.在表单提交时,使用JavaScript替换......
  • 【代码片段分享】比 url.QueryEscape 快 7.33 倍的 FastQueryEscape
    作者:张富春(ahfuzhang),转载时请注明作者和引用链接,谢谢!cnblogs博客zhihuGithub公众号:一本正经的瞎扯做profile发现url.QueryEscape占用的CPU时间较多,于是搜索到了一个资料:net/url:optimizeunescapeandescape.于是在这个代码的基础上改了FastQueryString的版......
  • CMU15445 (Fall 2020) 数据库系统 Project#2 - B+ Tree 详解(上篇)
    前言考虑到B+树较为复杂,CMU15-445将B+树实验拆成了两部分,这篇博客将介绍Checkpoint#1部分的实现过程,搭配教材《DataBaseSystemConcepts》食用更佳。B+树索引许多查询只涉及文件中的少量记录,例如“找出物理系所有教师”的查询就只涉及教师记录中的一小部分,如果数据库......
  • 用jQuery实现轮播图——超简单(代码解释)
    一、直接上代码<!DOCTYPEhtml><html> <head> <metacharset="utf-8"> <title></title> <style> .wrapper{ width:600px; height:350px; border:1pxsolidred; position:relative; } ......
  • 在access 2007 中进行sql query
    1.发现了两个小工具(都是通过odbc来访问)1.1winsql(其中lite是免费版,需要上网站上申请注册号)1.2querytool2.CreatingaSQLQueryinAccess2007byrhyttinenonSeptember17,2008SQL(StructuredQueryLanguage)isapowerfuldatabaselanguageusedinqueries......
  • 【C#/.NET】Dapper使用QueryMultipleAsync执行多条SQL
    ​ 目录 背景解决方案总结 背景        对于查询数据列表的功能,需要分页已经查询总数。这里涉及两句SQL,一个是查询分页对应的数据,第二个是Count(*);会导致部分重复代码和两次的数据库查询。 解决方案        Dapper有封装QueryMultipleAsync的......