枚举常量1, 枚举常量2,...,枚举常量n};enumWeekday{Sunday,Monday,Tuesday,Wednesday,Thursday,Friday,Saturday}; 它们的值默认从0开始递增(除非明确指定了某个常量的值)。因此,Sunday的值为0,Monday的值为1,依此类推 类型安全:枚举类型提供了一种有限且预定义的值集合,这有助于确保变量的值始终在有效范围内 ...
提个醒,其实在这个project中,除了latch crabbing,另一个可能影响性能的地方在于内存池,因此类似NewPage、FetchPage、UnpinPage这些函数可以尽可能少地调用;为此可以尝试从事务Transaction的pageset中获取父节点,而不是FetchPage; 还有很多人说的乐观锁,自己也可以尝试一下(虽然我试过后没什么用);...
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 2022 PROJECT #2 B+Tree Index 前前言 本地测试通过是真的比较简单,因为有数据可以单步debug,很快就能定位错误。但是要通过在线评测还是比较痛苦的,没有数据,没办法单步调试,痛苦面具。 由于本次实验比较新,很少有现成的博客参考思路以及踩坑(有些坑真的很
解锁操作相对简单,主要步骤包括检查表中是否存在行锁、表锁状态、以及事务是否持有该表锁。若满足条件,则从锁请求队列中删除锁记录,释放锁,并唤醒阻塞在该锁上的其他事务。两阶段锁(2PL)是一种并发控制协议,确保事务在运行时访问数据库对象时生成的调度是非循环的。它能避免级联中止问题,但在某些...
并发控制在数据库管理中扮演关键角色,旨在确保事务并发执行的正确性和数据一致性。文章探讨了CMU15445-2022fall-Project 4中的并发控制技术,特别是基于两阶段提交(2PL)的并发控制方式,以及在实现中涉及的锁管理、事务隔离级别、并发查询执行和优化策略。在并发控制机制中,事务被视为数据库操作的基本单位...
在逻辑查询计划中,节点信息通过`AbstractExpression`(抽象表达式)来维护,它包含了子节点指针和节点值类型等信息。物理查询计划同样以树的形式呈现,节点为各种`Executor`(算子),它们负责执行具体的数据库操作。文中提到了`Factory method pattern`(工厂方法模式)在执行引擎中的应用,通过`ExcutionFactory...
lab地址:Project #2 - B+Tree | CMU 15-445/645 :: Intro to Database Systems (Fall 2022) 课件:15445.courses.cs.cmu.edu B站讲解视频:08-索引并发 [中文讲解] CMU-15445 数据库内核_哔哩哔哩_bilibili Task #4 - Concurrent Index 这一节要基于latch crabing策略把单线程的B+树更新为多线程,实现索...
project 2 B+ 下面的代码,是第一次写没有调试的代码,所以逻辑对,但是写法有很多错误。copy也没办法做出来,只提供一个逻辑整理的作用。 首先,完成三个节点 进入,插入操作 任务一:完成三个page parent page internale page leaf page 注意点:Get MIN() ...
CMU15-445 PROJECT #1 - BUFFER POOL 前前言 本地测试通过是真的比较简单,因为有数据可以单步debug,很快就能定位错误。但是要通过在线评测还是比较痛苦的,没有数据,没办法单步调试,痛苦面具。 由于本次实验比较新,很少有现成的博客参考思路以及踩坑(有些坑真的很蠢,但是要花费很多很多很多时间,甚至2/3的时间都花...