在Linux操作系统上将数据库数据保存到磁盘时,MySQL是否使用FREAD、READ、MMAP或其他文件系统?或者mysql正在做一个测试,看看要使用哪一个?这不涉及保存配置数据。我对实际的数据库感兴趣,最好是innodb。
谢谢你的帮助。
更具体地说,我感兴趣的是MySQL中C/C++源代码,这些代码实现了将数据保存到一个NoYDB数据库的实际调用。可能的选项包括fread、read、mmap等。
在linux系统上,所有posix文件系统都可以工作。fread是一个libc构造,它将转换为下面的系统调用,如 read , mmap , write 等。
read
mmap
write
读、mmap、写操作在linux vfs(虚拟文件系统)层中实现,然后映射到文件系统代码中的特定操作。所以任何posix文件系统都可以使用mysql。
我在mysql代码中看到的惟一文件系统测试是 fallocate 不是在所有文件系统上都实现的syscall(特别是在首次添加时,它现在可能非常可用)。当 错位 不可用。
fallocate
错位
mysql使用什么文件系统?
mysql访问方法代码(innodb、myisam、ariadb等)使用主机操作系统上主机卷的本机文件系统。Windows上的NTFS、U**X系统上的ext4fs等。有能力的平台端口使用各种I/O技术,包括内存映射、分散/聚集和普通读写系统调用,并与文件系统的日志记录功能集成。具体使用的技术取决于查询的类型、访问方法和缓存的状态。
提示: 不要担心性能问题,除非你的服务器运行在一个32位的486机器上,你可以在一个仓库里找到它(或者除非你有数百万的用户和数十亿行的数据)。