Mongodb索引 - 内存和文件

时间:2013-10-08 02:47:41

标签: mongodb mongodb-query

我有一个包含1000万个文档的集合,每个文档都有四个简单的文本字段。 Mongo第一次在字段上构建索引大约需要5分钟(即当我从Mongo shell运行ensureIndex命令时)。

我知道Mongo索引是在内存中维护的B树数据结构。但是当我关闭并重新启动mongod时,索引立即生效(即)在服务器启动后立即运行的查询,使用索引。

想知道:
1.当这些索引与磁盘上的文件同步时?
2.如果mongod重新启动,这些索引什么时候会被装回内存?

Mongo在以下两个阶段构建索引(可以在mongod日志中观察到这一点)。知道在每个阶段做了什么。
1.外部分类进度
2. Btree自下而上的进展

1 个答案:

答案 0 :(得分:1)

索引的管理方式与收集本身的方式相同:它们存储在磁盘上,但(希望,如果你有足够的RAM),缓存在内存中。

当您访问它们时,它们将被加载到内存中(逐页,而不是一次全部)。他们将留在记忆中,直到你需要记忆为其他东西。这是由缓存策略管理的,该策略应该将数据库中最常访问的部分保留在内存中。