微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

DBMS 是否真的绕过操作系统并运行在文件系统上来管理磁盘空间?

如何解决DBMS 是否真的绕过操作系统并运行在文件系统上来管理磁盘空间?

我正在研究 slides 提供的 UCB cs186 fall 2020 course,它说:

在磁盘空间管理方面,有2个建议:

  • 直接与存储设备对话,或
  • 运行我们自己的文件系统 (FS)。绕过操作系统,分配一个大的“连续”文件 一个空磁盘

我没有得到第二个建议。我确实理解利用文件系统很棒,因为它对我们有很多帮助,但是:

  • 为什么要绕过操作系统?为什么不使用通过操作系统提供的文件系统 API 来管理磁盘空间?
  • “使用 FS 但绕过操作系统”的真正含义是什么 - 我认为大多数系统通过操作系统使用 FS。在 DBMS 世界中不是这样吗?

解决方法

DBMS旨在解决的问题:磁盘空间大而慢,内存小而快,如何让我们的DB变大变快?因此,它需要同时解决内存管理和磁盘管理。

通常,DBMS 依赖操作系统文件系统进行磁盘管理,但会绕过操作系统(即 mmap)进行内存(又名缓冲池)管理。

  • 磁盘管理:很少有 DBMS(BlueStoreScyllaDB)绕过操作系统文件系统并直接与原始设备对话,但由于复杂性、可移植性和无关紧要等问题加速(根据 Andy Pavlo 的说法约为 10%),它们并不常见。

  • 内存管理:大多数 DBMS 对工作负载/事务有逻辑理解,而操作系统不知道内存中不同缓冲区之间的关系。这有利于 DB 自行管理内存。

感谢 CMU 15-445 非官方社区 (Discord) 中的 Aashray#4143 和 miller#0114。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。