【发布时间】:2014-02-07 21:53:25
【问题描述】:
我从 MondoDb 文档中阅读
“尽管如此,运行 MongoDB 的系统不需要 swap 进行日常操作。数据库文件是内存映射的,应该构成 MongoDB 内存使用的大部分。因此,mongod 在正常操作中不太可能使用任何交换空间。操作系统会从内存映射文件中释放内存,不需要交换,MongoDB 可以在不需要交换系统的情况下将数据写入数据文件。”
如果我没看错的话,当查询将新数据从磁盘加载到内存时,系统会用完物理内存(但不是虚拟内存),操作系统会从内存中“释放”一些旧内容以腾出空间新数据。这与将旧内容交换到交换空间的 usu mmap 行为相反。由于虚拟内存是由操作系统控制的,而不是由 Mongo 控制的,我不明白这个描述怎么可能是真的。
任何专家可以为我澄清一下吗?这是一个相当重要的问题,因为“释放”实际上更可取,因为它跳过了交换的 IO 损失。
【问题讨论】:
-
您的问题可能会更清楚地表达为:mongo 是否使用交换?简短的回答是:不:)