Pengzna's blog 👋

Sep 18, 2022

CMU 15-445: 1. Disk Manager

1. Disk Manager

  • 面向磁盘的数据库系统
    • 主要存储放在磁盘上,每次查询时,访问的数据不在内存中

1.1. (none) volatile storage

  • 此部分在计组和 ics 已经学过,不再赘述

image-20220923152440566

1.2. 总览目标

  • 给应用提供一种假象:它总是拥有足够的内存来处理
  • 允许 DBMS 来用超过内存的大小处理数据库

1.3. mmap

  • 虚存的思想。交给 OS 来处理缺页中断
  • 但是在数据库系统里,这样会产生问题(read 不会产生问题,但是 write 要谨慎):有时候页与页之间写有顺序要求(比如日志和并发控制),而 os 并不知道这些事情,导致会出现错误
  • 因此:慎用 mmap。事实上,数据库总是能够接管 os 能干的事情,并能够比 os 干的更好

1.4. file storage

  • DBMS 将数据库存储在磁盘上的一个或多个文件中
    • OS 对它们的内容并无所知
  • 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

image-20220924122654927

  • 通过 fileId + pageId + slotId 来寻找具体的 slot

1.7. Tuple Layout

  • tuple is a sequence of bytes
  • DBMS 需要解释这些 sequence of byte

1.7.1. tuple header

image-20220924154320372

1.7.2. tuple data

image-20220924154420159

剩余笔记

CMU-15-445 Lecture 4 数据库存储(下) - 知乎 (zhihu.com)

OLDER > < NEWER