2013-10-08 70 views
0

我有一个拥有1000万个文档的集合,每个文档有四个简单的文本字段。 Mongo首次在一个字段上建立索引需要大约5分钟的时间(即,当我从Mongo shell运行ensureIndex命令时)。Mongod索引 - 内存和文件

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

想知道:
1.当这些索引与磁盘上的文件同步?
2.如果mongod重新启动,何时会将这些索引加载回内存?

Mongo在以下两个阶段建立索引(可以在mongod日志中观察到这一点)。任何想法在每个阶段中都做了什么。
1.外部排序进步
2. B树底向上进步

回答

1

指标的管理同样的方式,收藏本身是:它们存储在磁盘上,但(我们希望,如果你有足够的RAM),缓存在内存中。

当您访问它们时,它们将被加载到内存(逐页,并非全部)。他们会留在记忆中,直到你需要记忆来寻找别的东西。这由缓存策略管理,该策略应该将数据库中访问频率最高的部分保存在内存中。