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 list

    Page 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的结构和定义表是的结构一致
作者

xiaomaotou31

发布于

2022-04-12

更新于

2022-04-13

许可协议

评论