• 2024-10-26CMU15445学习记录
    写在开头我已经深刻意识到找工作的不易,因此想要开始恶补计算机基础知识,以此作为起点由于考研的时候学过408综合,因此试图逃课CSAPP并直接开始CMU,发表此篇用作记录。关于底层原理原理数据库会把索引和page放在一大块内存空间中,一般索引置为末尾,page从头开始填充,这样对page进行
  • 2024-03-30CMU15445 2022fall project1
    cmu154452022falllab1BufferPool此project实现一个bufferpool,缓存住磁盘查询的数据。Task1这部分需要我们实现一个可扩展的哈希表,这部分的难点在于插入操作时的分裂,由于Remove不需要我们将目录和桶收缩回去,所以它也很简单。先分析清楚目录和桶的结构。我们可以先实现简
  • 2024-03-30CMU15445 2022fall project4
    CMU154452022fallproject4这个project整体难度稍微高于project3,主要难点在于task1。Task1这部分实现一个锁管理器处理事务对表和行的加锁解锁,是这个project中最复杂的部分。问题:关于为什么在各个隔离级别下,锁要设计成下面这样?REPEATABLE_READ:Thetransactionisr
  • 2024-03-23CMU15445 2022fall project3
    CMU154452022fallproject3project3相对project2的b+树来说简单太多了,整体没有什么痛苦的debug,基本就看看其他算子的实现参考一下,很快就能写出来。Task1-AccessMethodExecutorsSeqScan首先我们需要知道:init是做一些初始化工作的,next是留给上层节点调用的,SeqScanExecuto
  • 2024-03-18CMU15445 2022fall project2
    CMU154452022fallproject2CheckPoint1Task1B+TreePages这部分主要是给page、internal、leaf三个page类实现一些get、set方法和一些简单的函数。注意点:判断rootpage:parentpageid=INVALID_PAGE_IDGetMinSize():叶子结点为max_size_/2,内部节点为(max_size_+1)
  • 2024-01-22CMU15445 Concurrency Control
    LockManagerlock检查事务的隔离级别是否符合锁的要求REPEATABLE_READ:Thetransactionisrequiredtotakealllocks.AlllocksareallowedintheGROWINGstateNolocksareallowedintheSHRINKINGstateREAD_COMMITTED:Thetransactionisrequi
  • 2024-01-14CMU15445 Query Execution
    一些问题数据库里面一条数据就是一个tuple,它有一个唯一rid,由page_id和slotnum表示,当我们构建索引时,是选择一些列(每个index都有一个schema,表示使用哪些列构建索引)tuple序列化转化为字节数组,之后以这个字节作为key,rid作为value插入到b+树中。一个问题是如果这个
  • 2023-12-12一些好玩的Hash算法(CMU15445)
    graphLRR[HashTable]-->St[静态哈希策略] R-->Dy[动态哈希策略] St-->线性探测法 St-->t1[RobinHood] St-->t2[CuckooHashing] Dy-->Ch[ChainedHashing] Dy-->Ex[ExtendibleHashing] Dy-->Lin[LinearHashing] Hash策略的分类静态哈希哈希表
  • 2023-11-02CMU15445 2023fall——PROJECT #1 - BUFFER POOL
    PROJECT#1-BUFFERPOOLASSIGNMENT翻译点击查看Task#2-DiskScheduler翻译Task#2-DiskScheduler(磁盘调度程序)该组件负责调度DiskManager上的读写操作。实现disk_scheduler.h文件和disk_scheduler.cpp文件。Thiscomponentisresponsibleforschedul
  • 2023-10-11cmu15445面经总结
    lru与lru-k区别LRU(最近最少使用替换算法)思想:如果数据最近被访问过,那么将来被访问的几率也更高。实现:使用一个栈,新页面或者命中的页面则将该页面移动到栈底,每次替换栈顶的缓存页面。优点:LRU算法对热点数据命中率是很高的。缺点:1.缓存颠簸,当缓存(1,2,3)满了,之后数据访问(0,3,2,1,0,3
  • 2023-08-04CMU15445-2023 笔记:Project 0 - Copy-On-Write Trie
    CMU15445-2023笔记:Project0-Copy-On-WriteTrieInthisproject,youwillimplementakey-valuestorebackedbyacopy-on-writetrie.Triesareefficientordered-treedatastructuresforretrievingavalueforagivenkey.Tosimplifytheexplanation,we
  • 2023-07-19CMU15445 B+Tree
    首先,上一个taskbufferpool和这里的b+tree具体实现肯定不一样,关于具体的存储的层次也不一样;在bufferpool里,数据以page为单位,在b+tree中,每个索引结点而言,存储了很多的key-value,每个value对应一个子节点(子节点是用page_id来标识),需要从key找对应的page_id,这里p
  • 2023-06-19CMU15445 (Fall 2020) 数据库系统 Project#4 - Concurrency Control 详解
    前言一个合格的事务处理系统,应该具备四个性质:原子性(atomicity)、一致性(consistency)、隔离性(isolation)和持久性(durability)。隔离性保证了一个活跃的事务(还没提交或者回滚)对数据库所做的系统对于其他的活跃事务是不可见的,看起来就像某一时刻就只有一个事务在操作数据库。然而完美的
  • 2023-06-17CMU15445 (Fall 2020) 数据库系统 Project#3 - Query Execution 详解
    前言经过前两个实验的铺垫,终于到了执行SQL语句的时候了。这篇博客将会介绍SQL执行计划实验的实现过程,下面进入正题。总体架构一条SQL查询的处理流程如下为:SQL被Parser解析为抽象语法树ASTBinber将AST转换为Bustub可以理解的更高级的ASTTreerewriter将语法
  • 2023-06-11CMU15445 (Fall 2020) 数据库系统 Project#2 - B+ Tree 详解(上篇)
    前言考虑到B+树较为复杂,CMU15-445将B+树实验拆成了两部分,这篇博客将介绍Checkpoint#1部分的实现过程,搭配教材《DataBaseSystemConcepts》食用更佳。B+树索引许多查询只涉及文件中的少量记录,例如“找出物理系所有教师”的查询就只涉及教师记录中的一小部分,如果数据库
  • 2023-06-07CMU15445 (Fall 2020) 之 Project#1 - Buffer Pool 详解
    前言去年暑假完成了CMU15-445Fall2019的四个实验,分别对应下述博客:CMU15445(Fall2019)之Project#1-BufferPool详解CMU15445(Fall2019)之Project#2-HashTable详解CMU15445(Fall2019)之Project#3-QueryExecution详解CMU15445(Fall2019)之Proje
  • 2023-03-24CMU15445
    //===----------------------------------------------------------------------===//////BusTub////p0_trie.h////Identification:sr
  • 2022-11-29cmu15445_lab1_BUFFER POOL
    BufferPoolManager整理一下cmu15445的实验的实现内容,具体实验的代码写的太丑就不公开了。Pagepage:page是一个数据库中存储的最小单位,也是磁盘和内存交换的最小单位,每
  • 2022-11-14[已满分在线评测] cmu15445 2022 PROJECT #2 B+Tree Index
    CMU154452022PROJECT#2B+TreeIndex前前言本地测试通过是真的比较简单,因为有数据可以单步debug,很快就能定位错误。但是要通过在线评测还是比较痛苦的,没有数据,没办法
  • 2022-10-312022_CMU15445_lab0笔记(Trie)
    预备工作环境我在windowswsl2中使用docker,docker是编译环境,wsl是编码环境,用共享目录的形式将docker目录和wsl2关联,用vscode编码剩下的环境配置直接参考https://gi
  • 2022-10-01CMU15445 lab1 - BUFFER POOL
    本文为本人完成154452020fall(B+树版本)时的一些记录,仅作为备忘录使用。TASK#1-LRUREPLACEMENTPOLICY本任务为实现一个LRU页面置换策略,建立一个关于面向磁盘的数据