3

我使用 mongodb 仅插入文档。没有为我使用的集合创建索引。但是我看到 Mongodb 使用的内存越来越高。机器有 20GB 的 RAM 已完全使用。我想知道这是什么原因,这正常吗?

4

1 回答 1

4

这里有一个关于 MongoDB 如何使用存储和内存的精彩讨论:

http://docs.mongodb.org/manual/faq/storage/

具体到您的情况,Mongo 内存映射数据和索引所在的文件(默认情况下位于 /data/db 目录中的文件),这意味着文件被映射到操作系统的虚拟地址空间,然后每当 MongoDB 访问页面时(任何文件的一部分)该页面将被拉入 RAM,并将一直留在那里,直到操作系统为 mongod 进程提供的所有 RAM 都被使用(此时最近最少使用的页面将被换出 RAM)。

您正在插入数据,因此您正在写入数据文件 - 您正在写入的那些页面需要在 RAM 中(mongo 写入文件,但由于它们是内存映射的,因此它可以与内存交互,就像它是磁盘存储一样)。如果 mongod 使用 20GB 以上的 RAM,则意味着您的数据加上索引(加上其他一些开销)为 20GB 或更多。

于 2013-01-04T05:30:25.940 回答