三、数据库存储层(Advanced Database Storage)
Disk Manager 简介
背景(Background)
传统的 DBMS 架构都属于 disk-oriented architecture,即假设数据主要存储在非易失的磁盘(non-volatile disk)上。于是 DBMS 中一般都有磁盘管理模块(disk manager),它主要负责数据在非易失与易失(volatile)的存储器之间的移动。
这里需要理解两点:
非易失性存储器上的随机访问几乎总是比顺序访问慢得多,「磁盘管理模块」的存在就是为了同时获得易失性存储器的性能和非易失性存储器的容量,让 DBMS 的数据看起来像在内存中一样。
为什么不使用 OS 自带的磁盘管理模块
OS 为开发者提供了如 mmap 这样的系统调用,使开发者能够依赖 OS 自动管理数据在内外存之间的移动,那么 DBMS 为什么要重复造这样的轮子?主要原因在于,OS 的磁盘管理模块并没有、也不可能会有 DBMS 中的领域知识,因此 DBMS 比 OS 拥有更多、更充分的知识来决定数据移动的时机和数量,具体包括:
All articles on this blog are licensed under CC BY-NC-SA 4.0 unless otherwise stated.