0

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

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

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

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

4

1 回答 1

1

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

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

于 2013-10-08T02:56:45.943 回答