如果你还没开始写cmu15445,那么我更推荐最新年份的。 #p0 day 1 2024.2.25: 学习了gdb调试,第一节课,在Ubuntu虚拟机中配置好了环境(vscode编写代码,cmake编译,gdb调试,git本地版本控制(因为fall2022早就更新完了,所以没有在github新建仓库,直接在本地建立了一个仓库。),cppreference和effective cpp语法参考),准...
首发于cmu15445 fall2022记录 切换模式写文章 登录/注册 cmu15445 fall2022 p1 都督 2 人赞同了该文章 目录 收起 ExtendibleHashTable 分裂顺序 多次分裂 LRU-K BufferPoolManagerInstance 基本思想 细节有坑 vscode 配置 调试代码 参考 对实验三个部分做个记录,最后列了下我用vscode配置、调试的方法。
CMU15445 2022fall project3 project3相对project2的b+树来说简单太多了,整体没有什么痛苦的debug,基本就看看其他算子的实现参考一下,很快就能写出来。 Task 1 - Access Method Executors SeqScan 首先我们需要知道:in
本文回顾了CMU15445课程的学习历程及项目进度。学习始于2023年7月9日,至2024年3月3日结束。作者以C++语言为主,学习过程较为吃力,特别是项目部分。课程涉及多个项目,从项目0到项目4,每一步都充满了挑战。项目0从2023年12月5日开始,至7日完成,此项目主要为补习C++基础,笔记长达176行。项目1从1...
CMU15445 2022fall project2CheckPoint 1Task 1 B+Tree Pages这部分主要是给page、internal、leaf三个page类实现一些get、set方法和一些简单的函数。注意点:判断root page:parent page id = INVALID_PAGE_ID GetMinSize():叶子结点为max_size_ / 2,内部节点为(max_size_ + 1) / 2(为什么root没特判?因为...
并发控制在数据库管理中扮演关键角色,旨在确保事务并发执行的正确性和数据一致性。文章探讨了CMU15445-2022fall-Project 4中的并发控制技术,特别是基于两阶段提交(2PL)的并发控制方式,以及在实现中涉及的锁管理、事务隔离级别、并发查询执行和优化策略。在并发控制机制中,事务被视为数据库操作的基本单位...
这里以cmu15-445 2022fall p1 buffer_pool为基础讲解,以下为涉及到的成员变量。 全局深度global_depth_ 当前dir_的深度大小。 这里的深度大小指的是: 取对应元素低多少位的二进制,用于将元素散列到不同的bucket。 局部深度local_depth_ 特指某个桶的深度大小 ...
这里以cmu15-445 2022fall p1 buffer_pool为基础讲解,以下为涉及到的成员变量。 全局深度global_depth_ 当前dir_的深度大小。 这里的深度大小指的是: 取对应元素低多少位的二进制,用于将元素散列到不同的bucket。 局部深度local_depth_ 特指某个桶的深度大小 ...
解锁操作相对简单,主要步骤包括检查表中是否存在行锁、表锁状态、以及事务是否持有该表锁。若满足条件,则从锁请求队列中删除锁记录,释放锁,并唤醒阻塞在该锁上的其他事务。两阶段锁(2PL)是一种并发控制协议,确保事务在运行时访问数据库对象时生成的调度是非循环的。它能避免级联中止问题,但在某些...
接着4应该插入到0和2所在的桶,然后新建两个新的bucket,把0、2重新放置,新bucket的局部深度是2,那么按照之前的策略,一个bucket的内容是0,另一个是2;下一步需要把这两个新的bucket重新插入到目录中,因为现在目录0和2都指向第一个桶,因此需要把这两个新建的bucket重新分配给这两个目录;因为之前按照哈希值的第...