首页 > 解决方案 > mongodb“_id”索引是否始终保存在缓存中?

问题描述

我有一个 mongodb 数据库,它有多个集合。还有一个额外的集合,它更像是系统中发生的所有事件的日志。我想知道,当我有一个很少使用的大型集合时,该集合的“_id”索引是否也在该集合上没有发生任何操作时放入 RAM 中?或者它只是在磁盘上等待,直到执行读取操作。我主要担心的是这个集合的大小是否会影响其他查询的性能(由于集合的大小比可用 RAM 大几倍)。

标签: mongodbmongodb-indexes

解决方案


它们将在LRU 的基础上被换掉。

索引不必在所有情况下都完全适合 RAM。如果索引字段的值随着每次插入而增加,并且大多数查询选择最近添加的文档;那么 MongoDB 只需将索引中包含最新或“最右边”值的部分保留在 RAM 中。

为确保此索引适合 RAM,您不仅必须拥有超过那么多可用的 RAM,而且还必须为工作集的其余部分提供可用的 RAM 。索引和工作集必须能够同时放入内存。

https://docs.mongodb.com/manual/tutorial/ensure-indexes-fit-ram/#indexing-right-handed


推荐阅读