1. Disk Manager
- 面向磁盘的数据库系统
- 主要存储放在磁盘上,每次查询时,访问的数据不在内存中
1.1. (none) volatile storage
1.2. 总览目标
- 给应用提供一种假象:它总是拥有足够的内存来处理
- 允许 DBMS 来用超过内存的大小处理数据库
1.3. mmap
- 虚存的思想。交给 OS 来处理缺页中断
- 但是在数据库系统里,这样会产生问题(read 不会产生问题,但是 write 要谨慎):有时候页与页之间写有顺序要求(比如日志和并发控制),而 os 并不知道这些事情,导致会出现错误
- 因此:慎用 mmap。事实上,数据库总是能够接管 os 能干的事情,并能够比 os 干的更好
1.4. file storage
- DBMS 将数据库存储在磁盘上的一个或多个文件中
- Storage manager 负责维护数据库的文件
- page 可以保存很多类型,比如 tuples,meta-data 等
- 但是一般一个 page 只存储一个类型的
- 每个物理 page 有一个实际 id 对应它
- 不同的 DBMS 通过不同的方式管理磁盘上的页
- 堆文件(Heap File)组织(Organization)
- Sequential / Sorted File Organization
1.5. Heap File
- 无序的 pages 集合。其中 tuples 是无序(随机)的存储于其中
1.6. Page Layout
- 通过 fileId + pageId + slotId 来寻找具体的 slot
1.7. Tuple Layout
- tuple is a sequence of bytes
- DBMS 需要解释这些 sequence of byte
1.7.2. tuple data
剩余笔记
CMU-15-445 Lecture 4 数据库存储(下) - 知乎 (zhihu.com)