文章目录
- 1 前言
- 2 磁盘空间管理
- 3 磁盘空间管理的实现
- 4 存储对象关系
- 5 总结
- 6 系列文章
1 前言
如何将表中的记录存储在物理磁盘上呢?
- 概念模式中,记录(Record)表示表中的一行数据,由多个列(字段或者属性)构成
- 物理模式中
- 记录以字节为单位(记录的字节表示)存储在内存中
- 必要时(例如内存空间不足),被进一步存储在磁盘中(通常称为刷盘)
如何将内存中的记录保存在磁盘中?以什么方式保存?
这就是磁盘空间管理要解决的问题。
2 磁盘空间管理
磁盘空间管理是数据库读写效率的基石。
磁盘空间管理的目标:
- 将内存中的Page映射到磁盘的位置
- 将Page从磁盘加载到内存
- 将Page保存回磁盘并确保写入
- 为上层提供Page相关的服务,例如Page的创建、读取、写入和注销
Page是什么意思?
Page是内存中一块连续的区域,用于保存记录。内存中的数据写入磁盘,或者从磁盘读取,并不是以记录为单位进行的,而是以Page为单位。
为什么要把记录组织成Page再写入磁盘中?
还记得磁盘的工作原理吗?为了优化磁盘I/O性能,要尽可能将数据写入一个连续的区域内(称为块或Block)。内存中的Page就是为了对应磁盘中的Block。
通常情况下,Page和Block是等价的,都是指一块儿连续的区域,是磁盘读写的基本单位。通常,在内存中常用Page,而在磁盘中常用Block。
3 磁盘空间管理的实现
整体来说,存在两种实现方法:
- 直接依赖于物理设备
- 在深入理解物理设备特性基础上,可以做到性能最好
- 但是过于依赖物理设备细节,无法实现可移植性
- 基于文件系统(filesystem)
- 将数据以某种方式组织在一起并保存在文件(File)中
- 文件系统善于对文件进行顺序访问
- 数据库会产生多个数据文件,这些文件可能存储在多个物理磁盘上
显然,基于文件系统的方式更好。理论上,如果直接基于物理设备去实现,相当于实现了一套定制化的文件系统。
文件是文件系统提供的抽象对象。一个文件由多个Page/Block组成。
4 存储对象关系
Table、Page、和File都是存储记录的载体。它们之间是什么关系?
- Table:记录的逻辑存储载体,处于概念模式,属于关系模型中的概念
- Page:记录的字节表示在内存中的存储载体,是文件读写的基本单位,处于物理模式
- File:由多个Page/Block组成的物理文件,处于物理模式,通常一个Table对应一个数据文件
5 总结
关于文章开头的问题:
如何将内存中的记录保存在磁盘中?以什么方式保存?
目前我们只讨论了第一个问题:
- 在物理模式的最下层,实现了磁盘空间管理模块
- 它负责将内存中的Page写入文件系统,并从文件系统读取Page
- 它对上提供了Page相关服务,并隐藏了文件读写的实现细节
在下一篇文章中,我们继续讨论第二个问题:如何在Page中组织记录,以及如何在File中组织Page。
6 系列文章
更多系列文章,请参考:【如此简单!数据库入门系列】之思想地图 – 系列目录
如果喜欢这篇文章,请不要忘记关注、点赞和收藏哦!
您的鼓励将是我创作的最大动力!