如何解决DBMS 是否真的绕过操作系统并运行在文件系统上来管理磁盘空间?
我正在研究 slides 提供的 UCB cs186 fall 2020 course,它说:
在磁盘空间管理方面,有2个建议:
我没有得到第二个建议。我确实理解利用文件系统很棒,因为它对我们有很多帮助,但是:
- 为什么要绕过操作系统?为什么不使用通过操作系统提供的文件系统 API 来管理磁盘空间?
- “使用 FS 但绕过操作系统”的真正含义是什么 - 我认为大多数系统通过操作系统使用 FS。在 DBMS 世界中不是这样吗?
解决方法
DBMS旨在解决的问题:磁盘空间大而慢,内存小而快,如何让我们的DB变大变快?因此,它需要同时解决内存管理和磁盘管理。
通常,DBMS 依赖操作系统文件系统进行磁盘管理,但会绕过操作系统(即 mmap)进行内存(又名缓冲池)管理。
-
磁盘管理:很少有 DBMS(BlueStore、ScyllaDB)绕过操作系统文件系统并直接与原始设备对话,但由于复杂性、可移植性和无关紧要等问题加速(根据 Andy Pavlo 的说法约为 10%),它们并不常见。
-
内存管理:大多数 DBMS 对工作负载/事务有逻辑理解,而操作系统不知道内存中不同缓冲区之间的关系。这有利于 DB 自行管理内存。
感谢 CMU 15-445 非官方社区 (Discord) 中的 Aashray#4143 和 miller#0114。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。