本篇文章是CMU 15445数据库系统的学习笔记,持续更新... [课程视频 Fall 2021] | [课程主页] LEC03. 数据库存储结构(上) 分层设计概述 设计任何大型系统时的一个常用手段是分层,数据库系统也可以被分成若干层,每一层处理自己的事情,向上提供简单的API隐藏细节。 举个例
CMU 15445 学习笔记—8 Index Concurrency Control 前面讲到的索引数据结构,例如哈希表、B+ 树,我们都假设它是在单线程环境下运行的。 但实际上数据库中的行为大多是并发执行的,我们需要利用现代多核 CPU 的优势,避免频繁查询磁盘导致系统响应延迟。所以保证在多线程环境下索引访问的正确性,就十分的重要了。 Lock &...
结语: 整个15445可能花了150-170个小时,p0 1天提交9次,p1 6天提交75次,p2 7天(去除中间电脑进水)提交77次 p3 3天提交10次 p4 6天提交61次,写了一个多月时间。 个人觉得难度是: p4 > p2 > p1 > p3.. 因为我之前写过不少平衡树,p2对于我来说难度小一些,而且有b_plus_tree_printer比较好debug;p4...
CMU 15445 学习笔记—7 Tree Index II 前面一篇文章着重讲述了 B+ 树索引,实际上一些数据库中,树索引除了 B+ 树结构,还有其他的一些比较常见的索引结构。 Various Indexes 在介绍具体的数据结构之前,先来看一下数据库中常见的不同的索引形式。 Cluster Index cluster index,即聚簇索引,指的是将表中的数据全部...
CMU15445-2020 fall 笔记:Project 4 - CONCURRENCY CONTROL The fourth programming project is to implement a lock manager in your database system and then use it to supportconcurrent query execution. A lock manager is responsible for keeping track of the tuple-level locks issued to transactions and...
但对于 DBMS 来说,为了提高各方面性能,需要恰如其分地向不同的 transactions 分配计算资源,使得执行又快又正确。这里的 “恰如其分” 的定义用行话来说,就是 concurrency control protocol,即 DBMS 如何认定多个 transactions 的重叠执行方式是正确的。总体上看,有两种 protocols:...
CMU 15445 学习笔记—3 Storage Manager 存储介质 一个数据库系统大致由以下几个不同的部分组成: query plan(执行计划) operator execution(执行器) access method(访问方法) buffer pool(缓冲池) disk manager(磁盘管理) 以及其他的的一些组成部分,例如并发控制、分布式等。 这个课程系列将会自底向上逐一介绍。
CMU15445-2020 fall 笔记:Project 2 - B+ TREE Introduction B+ 树定义: 注意根节点和非根节点的孩子个数差别 B+ 树的数据结构如下图所示: CheckPoint1 如图所示 bustub 中一个 Page 的数据空间大小为 BUSTUB_PAGE_SIZE = 4096 字节。 InternalPage ...
CMU 15445 学习笔记—6 Tree Index I Table Index 前面介绍完了 Hash Table,在数据库系统中,它可以用于一些 sql 执行时的临时数据结构,或者用来存储一些元数据信息,也可以作为表的 Hash 索引,但是对于表索引,在更通用的场景下, B+ 树是更广泛的选择。
CMU15445-2023spring 笔记:Project 0 - Copy-On-Write Trie In this project, you will implement a key-value store backed by a copy-on-write trie. Tries are efficient ordered-tree data structures for retrieving a value for a given key. To simplify the explanation, we will assume that the key...