mongodb中的内存映射是什么?

mongodb中的内存映射是什么?,mongodb,operating-system,Mongodb,Operating System,我在网上读到了这个话题 但我不明白这一点。它是用来将查询数据保存在物理内存中的吗?它与虚拟内存有什么关系?为什么它很重要,以及它如何影响性能?我将尝试用一种简单的方式解释 MongoDB(和其他存储系统)将数据存储在文件中。每个数据库都有自己的文件,根据需要创建。第一个文件的重量为64MB,下一个文件的重量为128,最高可达2GB。然后,创建的新文件重2 GB。每个文件在逻辑上被划分为不同的块,这些块对应于一个虚拟内存块 当MongoDB需要访问某个文件或其一部分时,使用mmap将与该文件或该

我在网上读到了这个话题


但我不明白这一点。它是用来将查询数据保存在物理内存中的吗?它与虚拟内存有什么关系?为什么它很重要,以及它如何影响性能?

我将尝试用一种简单的方式解释

MongoDB(和其他存储系统)将数据存储在文件中。每个数据库都有自己的文件,根据需要创建。第一个文件的重量为64MB,下一个文件的重量为128,最高可达2GB。然后,创建的新文件重2 GB。每个文件在逻辑上被划分为不同的块,这些块对应于一个虚拟内存块

当MongoDB需要访问某个文件或其一部分时,使用mmap将与该文件或该文件的一部分相对应的所有虚拟块加载到内存中。另一方面,mmap是应用程序利用系统缓存的一种方式(linux)

因此,当您执行查询时,MongoDB会“告诉”操作系统使用请求的数据加载所需的部分,因此下一次请求的时间会更快。可以想象,这是一个非常重要的特性,可以提高MongoDB等数据库的性能,因为访问RAM的速度比硬盘快得多


使用mmap的另一个好处是MongoDB内存将根据需要增长,并且系统内存是免费的。

谢谢。请您解释一下mongodb中使用的页面大小好吗?@user35662 mongodb使用系统页面大小,在64位x86中,默认情况下通常为4KB(4096字节)。Linux的最新发行版可能会启用,这可能会导致MongoDB出现性能问题。中的建议是禁用THP。@Stennie如何更改页面大小?