mongodb:强迫记忆

时间:2012-06-04 21:05:15

标签: caching mongodb memory indexing

使用myisam多年后现在有3个索引+大约500列用于行的Mio,我想知道如何“强制”mongodb将索引存储在内存中以便快速读取性能。

一般来说,它是一个结构简单的表,所有查询都是WHERE index1 = ..或index2 = ...或index3 = ..(myisam),而且在mongodb中也非常简单。 如果mongodb自己管理索引和ram,那就太好了。 但是,我不确定它是否确实以及mongodb可以加速索引上的这些查询的方式 - 最好。

由于

2 个答案:

答案 0 :(得分:2)

  

如果mongodb自己管理索引和ram,那就太好了。

MongoDB根本不管理RAM。它使用内存映射文件,并且基本上“假装”所有内容都是RAM。

相反,操作系统负责管理哪些对象保存在RAM中。通常以LRU为基础。

您可能想要检查索引的大小。如果你不能将所有这些索引保存在RAM中,那么MongoDB可能表现不佳。

  

但是,我不确定它是否存在以及mongodb如何在索引上加速这些查询的方式 - 最好。

MongoDB可以使用Covered Indexes直接从数据库中检索。但是,您必须非常特定于返回的字段。如果您包含不属于索引的字段,则它不会返回“仅索引”查询。

默认行为是包含所有字段,因此您需要查看特定查询并进行相应更改以允许“仅索引”。请注意,这些查询不包含_id,这可能会导致问题。

答案 1 :(得分:1)

您不需要“强制”mongo将索引存储在内存中。使用它时,索引会被带入内存,然后保留在内存中,直到操作系统将其取出。

MongoDB会尽可能自动使用覆盖索引。