DBMS 是否真的通过文件系统绕过 OS 和 运行 来管理磁盘 space?
Does DBMS actually bypass OS and run over filesystem to manage disk space?
我正在研究 slides offered by UCB cs186 fall 2020 course,它说:
在磁盘space管理方面,有2个建议:
- 直接与存储设备对话,或者
- 运行 我们自己的文件系统 (FS)。绕过 OS,分配一个大的“连续”文件
一个空磁盘
我没有收到第二个提议。我知道利用文件系统很棒,因为它对我们有很多帮助,但是:
- 为什么要绕过 OS?为什么不使用 OS 提供的文件系统 API 来管理磁盘 space?
- “使用 FS 但绕过 OS”的真正含义是什么 - 我认为大多数系统通过 OS 使用 FS。在 DBMS 的世界里不就是这样吗?
DBMS旨在解决的问题:磁盘space大而慢,内存小而快,如何让我们的DB大而快?因此,它需要同时解决内存管理和磁盘管理。
通常,DBMS 依赖 OS 文件系统进行磁盘管理,但会绕过 OS(即 mmap)进行内存(又名缓冲池)管理。
磁盘管理:很少有 DBMS (BlueStore, ScyllaDB) 会绕过 OS 文件系统并直接与原始设备通信,但由于复杂性、可移植性等问题,和微不足道的加速(根据 Andy Pavlo 的说法约为 10%),它们并不常见。
内存管理:大多数DBMS对workload/transactions有逻辑上的理解,而OS不知道内存中不同缓冲区之间的关系。这有利于 DB 自行管理内存。
感谢 CMU 15-445 非官方社区 (Discord) 中的 Aashray#4143 和 miller#0114。
我正在研究 slides offered by UCB cs186 fall 2020 course,它说:
在磁盘space管理方面,有2个建议:
- 直接与存储设备对话,或者
- 运行 我们自己的文件系统 (FS)。绕过 OS,分配一个大的“连续”文件 一个空磁盘
我没有收到第二个提议。我知道利用文件系统很棒,因为它对我们有很多帮助,但是:
- 为什么要绕过 OS?为什么不使用 OS 提供的文件系统 API 来管理磁盘 space?
- “使用 FS 但绕过 OS”的真正含义是什么 - 我认为大多数系统通过 OS 使用 FS。在 DBMS 的世界里不就是这样吗?
DBMS旨在解决的问题:磁盘space大而慢,内存小而快,如何让我们的DB大而快?因此,它需要同时解决内存管理和磁盘管理。
通常,DBMS 依赖 OS 文件系统进行磁盘管理,但会绕过 OS(即 mmap)进行内存(又名缓冲池)管理。
磁盘管理:很少有 DBMS (BlueStore, ScyllaDB) 会绕过 OS 文件系统并直接与原始设备通信,但由于复杂性、可移植性等问题,和微不足道的加速(根据 Andy Pavlo 的说法约为 10%),它们并不常见。
内存管理:大多数DBMS对workload/transactions有逻辑上的理解,而OS不知道内存中不同缓冲区之间的关系。这有利于 DB 自行管理内存。
感谢 CMU 15-445 非官方社区 (Discord) 中的 Aashray#4143 和 miller#0114。