Mongodb Mongod索引-内存和文件

Mongodb Mongod索引-内存和文件,mongodb,mongodb-query,Mongodb,Mongodb Query,我收集了1000万个文档,每个文档都有四个简单的文本字段。Mongo第一次在字段上构建索引大约需要5分钟(即,当我从Mongo shell运行一个ensureIndex命令时) 我知道Mongo索引是内存中维护的B树数据结构。但是,当我关闭并重新启动mongod时,索引会在服务器启动后立即运行的查询中使用索引 想知道: 1.当这些索引与磁盘上的文件同步时? 2.如果mongod重新启动,这些索引何时会加载回内存 Mongo在以下两个阶段建立索引(可以在mongod日志中观察到这一点)。知道每个阶

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

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

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

Mongo在以下两个阶段建立索引(可以在mongod日志中观察到这一点)。知道每个阶段都做了什么吗。
1.外部排序进度

2.b树自底向上的进度

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

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