我想知道缓存(内存)是如何预热的。据我所知,MongoDB使用内存映射文件和操作系统的虚拟内存根据需要交换页面。我不明白的是它在启动时如何变暖。
启动时mongod会将数据库中的所有页面映射到虚拟内存,还是有一些其他机制来加载尚未映射的页面,这些页面在对数据库运行时会被映射?
同样,数据库的大小是否限制为系统可用的虚拟内存量。据我所知,在64位系统上,这是很多。是否存在除了内存映射之外的其他机制,以便将页面移入和移出磁盘?
答案 0 :(得分:0)
内存映射表示存在所有可用磁盘文件的表示,但这些文件中只有一部分可能存在于RAM中。当需要给定页面(并且它不在RAM中)时,可以将其从磁盘读入RAM以进行访问。
关于限制,您可以在MongoDB limits page
上查看MongoDB在启动时没有对页面进行任何特定的“变暖”,因为它没有任何关于哪些页面有用而哪些页面没有用的概念。
如果您希望在使用之前手动“加热”某些集合,则应查看touch命令。