MongoDB仅在RAM中保存最近值的索引。
为了进行最快的处理,请确保索引完全适合RAM,以便系统避免从磁盘读取索引。
要检查索引的大小,请使用db.collection.totalIndexSize()帮助器,该帮助器以字节为单位返回数据:
> db.collection.totalIndexSize()
4294976499
上面的示例显示了几乎4.3 GB的索引大小。 为确保此索引适合RAM,您不仅必须拥有多于该数量的可用RAM,而且还必须为其余工作集提供RAM。 还请记住:
如果拥有并使用多个集合,则必须考虑所有集合上所有索引的大小。 索引和工作集必须能够同时容纳在内存中。
在某些有限的情况下,索引不需要容纳在内存中。 仅在RAM中保存最近值的索引。
索引不必在所有情况下都完全适合RAM。 如果索引字段的值随每次插入而增加,并且大多数查询都选择最近添加的文档; 那么MongoDB只需要将索引中保留最新或“最右边”值的部分保留在RAM中。 这样可以有效地将索引用于读写操作,并最大程度地减少支持索引所需的RAM数量。