CMU-15-445笔记(一)
DISK-ORIENTED DBMS
数据库在内存中设立了buffer pool来缓存外存中的信息
为什么不使用OS的虚拟内存?
这里主要原因是数据库需要足够的权限来控制页的置换
数据库信息在磁盘中的表示
数据库存储数据是使用了一到多个文件在磁盘上
DATABASE PAGES
一个Page是固定大小的,每个页都有一个ID(不同),作用是数据库取页的时候会直接通过页ID来取,然后再通过间接层去寻找在物理层面上的页,这样使物理层面的页与数据库层面的页放置位置解耦
页的种类
- HardWare Page 通常4KB
- OS Page 通常4KB
- Database Page 512B-16KB
页在磁盘上的形式
- 堆形式
- 连续
- 哈希
heap file
heap file 形式在磁盘中是无序的,所以需要元信息去寻找页在磁盘中位置,有两种方式 - Linked List
- Page Directory
Linked List
Linked List是有一个头结点,头结点分别指向free page list和data page listPage Directory
使用一个Directory,哈希每个页的位置Page的结构
Slotted Pages
Slotted Page头部有slot数组,每个slot指向一个页底层存储的tuple(实际上记录的是tuple在页中的offset),slot数组是向页底层增长,而tuple是从底层向上增长,直到这俩中间空间不够,页就满了Log-Structed File Organization
在这种形式中,页不再存储实际的数据,而只记录操作日志
数据库会将修改数据库数据的log插入到page当中
如果要读取这些记录,数据库会从后往前扫
也可以使用索引,直接跳转到想要的记录的位置上Tuple Data
每个Tuple有Header,记录了一些元信息 - 并发控制的粒度
- Bit Map for NULL values
每个Tuple可以认为是每个表中的行数据,Tuple的结构和定义表是的结构一致
CMU-15-445笔记(一)