当mongodb db size将是>然后是RAM时会发生什么?

Som*_*ser 13 memory ram memory-management mongodb

会变慢吗?是否只能找到适合RAM的数据?如果mongodb索引比RAM更多,会发生什么?

Tyl*_*ock 14

关于Mongo

MongoDB使用内存映射文件.

这意味着操作系统实际上控制了内存中的内容(进出磁盘).

规则

如果索引+工作集超过内存,则最近使用的最后页面(内存部分)将刷新到磁盘.这样只留下最近使用的数据,这些数据仍然适合存储器.

您的操作系统控制它.

如果您的真实工作集和索引不适合内存,您将体验到糟糕的性能,实际上,一个工作集(热数据)的大小远小于其总数据集.

如果你不违背这个规律,你应该有出色表现的大部分时间,即使你的索引+总数据可能会超过总的可用内存.

这个怎么运作

如果执行的查询需要不在内存中的数据,那么它将被分页到内存中(从磁盘中检索)并且会有性能损失.

注意:这基本上是数据库首次启动时的情况(冷).

内存中没有任何东西可以开始,需要数据时会发生页面错误,并且根据需要将数据分页到内存中.当内存不足时,最后使用的最后页面(块)将从内存中刷新,以支持更热(最近访问)的数据.

还值得一提的是,由于索引不断使用,因而最近一直使用,因此它们几乎从不被分页.


Ian*_*cer 6

如果索引大于可用RAM,则性能会迅速下降.MongoDB网站特别建议您"确保您的索引适合RAM".

如果您的查询看起来很迟钝,则应验证索引是否足够小以适应RAM.例如,如果你在4GB RAM上运行并且你有3GB的索引,那么你的索引可能不适合RAM.您可能需要添加RAM和/或验证您创建的所有索引是否实际被使用.