繁体   English   中英

有没有一种方法可以在启动时将mongodb索引加载到ram中? [重复]

[英]Is there a way to load the mongodb indexes into the ram on startup? [duplicate]

这个问题已经在这里有了答案:

我正在测试mongo db。 我有3个馆藏,其中一个是用户馆藏,有1000万个文档。 在对集合进行索引之后,大约需要0.002毫秒进行查询。 无论如何,重新启动-ubuntu 12.04框后,同一查询大约需要200毫秒。 好像集合上没有索引。 重新启动盒子后,mongodb的这种正常行为是吗? 有没有办法在启动时将索引加载到ram中?

MongoDB的正常行为是按应用程序使用的方式将数据和索引分页到内存中,而将要分页的内容的决定权留给操作系统的内存管理。 应用程序通常使用的数据和索引称为“工作集”。

运行了一段时间的mongod服务器应该已经在内存中设置了自然的工作集,因此除非您了解这样做的影响,否则您无需(或不想)安排每晚重新加载数据/索引。

有几种不同的方案可以“预热”服务器,以将适当的数据加载到内存中。

注意:谨慎使用

通常,这些方法仅应在“冷服务器”上使用(即,在首次启动时),而不是每晚使用。 如果您的数据和索引大于MongoDB可用的内存,则可以轻松地换出有用的数据或索引(并对性能产生不利影响)。 您也可以通过强制将不常用的数据或索引加载到RAM中来使用过多的内存。

方案1:加载给定集合的所有数据或索引

在MongoDB 2.2+中,您可以使用touch命令将磁盘上的集合的所有数据或索引从磁盘加载到内存中。 如果您需要处理集合的完整数据或索引,并有可用的内存来存储这些数据或索引,这将很有帮助。

方案2:根据当前工作集加载子集

如果要加载与当前工作集相对应的数据子集,则可以运行一些查询以“热身”数据库。 Parse的开发人员已经开源了一些实用程序,以通过采样和重播当前操作来帮助提供更具体的预热: 用于预热MongoDB Secondary的技术

方案3:运行应用程序的常见查询以预加载

您可以为应用程序运行一组典型查询,与集合或当前操作的样本的“所有”数据/索引相比,这可能会加载更实际的工作集。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM