CMU15-445 Buffer Pool & Project1-Fall2019版
1. Buffer Pool 是什么
Buffer Pool 是暂时存放再内存中的一块数据,数据内容为从磁盘中读取到的页的信息。
2. 为什么要用 Buffer Pool
简单的说是为了题速,由于读取速度从CPU->磁盘依次减慢
我们需要想办法把磁盘中的数据暂时存放在内存中,buffer pool 是我们用来存放这些信息的地方。
3. Buffer Pool 的结构
Buffer Pool 可以设计为一个对象数组,用来存放一个个的 Page 对象,由 Page_Id 来做区分读取和存放数据。
一些 metadata:
- isDirty 该page 是否被修改
- pinCount 该 page 正在被几个线程访问
- pageId 用来标记唯一 page
- data 用来存储 page 的真实数据
4. Lock VS Latches
在数据库中 Lock 并不是像 OS 中的Lock 一样,这里的 Lock 更像是在事务中开始定义的标志,在发生错误的时候支持回滚
而 Latches 和 OS 中的 Lock 相似