【问题标题】:What file system does MySQL use?MySQL 使用什么文件系统?
【发布时间】:2019-04-27 11:40:43
【问题描述】:

在 Linux 操作系统上将数据库数据保存到磁盘时,MySQL 是否使用 fread、read、mmap 或其他文件系统?或者 MySQL 是否正在做一个测试以查看使用哪一个?这与保存配置数据无关。我对实际的数据库感兴趣,最好是 InnoDB。

感谢您的帮助。

编辑:更具体地说,我对 MySQL 中的 c/c++ 源代码感兴趣,它执行将数据保存到 InnoDB 数据库的实际调用。可能的选项包括 fread、read、mmap 等。

【问题讨论】:

  • 你有什么问题取决于这个?
  • 我想为一个特定的程序编写我自己的简单、微型、淡化的数据库(非 SQL),并想使用 MySQL 使用的任何方法,因为我喜欢并信任 MySQL开发商。我相信他们花了很多时间来决定使用哪种方法。
  • MySQL的源代码是免费的,你可以下载。如果您认真地编写自己的数据库,您可能应该研究至少一个(最好是多个)现有数据库的源代码。如果你懒得看一些代码,那说明你对这个项目并不认真。
  • 是的,但是源代码很庞大,因为它做了很多事情,其中​​大部分我都不感兴趣。
  • 有许多可靠的存储框架。描述需求,您可能会得到一个不需要实施的现有需求。系统调用/库函数列表不会提供实现您自己的所需的洞察力。

标签: mysql filesystems disk


【解决方案1】:

MySQL 使用什么文件系统?

MySQL 访问方法代码(InnoDB、MyISAM、AriaDB 等)使用主机操作系统上主机卷的本机文件系统。 Windows 上的 NTFS,U**X 系统上的 ext4fs 等。主管平台端口使用多种 I/O 技术,包括内存映射、分散/聚集和普通读写系统调用,并与文件系统的日志功能集成.使用的具体技术取决于查询类型、访问方法和缓存状态。

专业提示: 除非您的服务器运行在您在储藏室中找到的旧 32 位 486 机器上(或者除非您拥有数百万用户和数十亿行数据)。

【讨论】:

  • 谢谢,但我对他们在 c/c++ 代码中使用的文件例程很感兴趣;例如,fread、read、mmap。
【解决方案2】:

在 Linux 系统上,所有 POSIX 文件系统都可以工作。 fread 是一个 libc 构造,将转换为底层系统调用,如 readmmapwrite 等。

读取、映射、写入操作在映射到文件系统代码中的特定操作之前在 Linux VFS(虚拟文件系统)层中实现。所以任何 POSIX 文件系统都可以与 MySQL 一起使用。

我在 MySQL 代码中看到的唯一文件系统测试是 fallocate 系统调用,它并没有在所有文件系统上实现(尤其是当它第一次添加时,它现在可能非常可用)。当fallocate 不可用时,有一个实施解决方法。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-06-22
    • 1970-01-01
    • 1970-01-01
    • 2010-11-04
    • 2011-02-24
    • 2019-02-28
    • 1970-01-01
    相关资源
    最近更新 更多