node.js - 我可以将整个 MongoDB 集合缓存在内存中以提高查询性能吗?

标签 node.js mongodb

我有一个 MongoDB 集合,其中包含数千个复杂的文档对象。当我运行一个查询,其中包含超过 10 - 15 个嵌套和深度嵌套值的查找条件时,大约需要 20-30 毫秒才能产生结果。我在谷歌上搜索有关提高查询速度的信息,然后我发现有一种方法可以将整个集合存储在内存中。

Can somebody please through some light over how to keep entire collection cached in memory?

我不想丢失我的磁盘集合,我只是想让我的整个集合在内存中可用,并且我计划每隔几分钟从我的磁盘集合更新内存集合。

注意:我不想使用唯一的内存集合,我想保留拥有持久数据的能力

最佳答案

根据您使用的存储引擎,通过 MMAPv1,您可以将数据和索引加载到内存中,您可以运行 touch 命令:

db.runCommand({ touch: "collection", data: true, index: true })

更多信息可以在这里找到:https://docs.mongodb.com/manual/reference/command/touch/

但是,如果您使用 WiredTiger 存储引擎,您只需编写一个简单的查询即可命中所有索引:

db.collection.find({indexedField: 1}).count()

或者使用 find 将文档加载到内存中:

db.collection.find({documentsIWant: true})

关于node.js - 我可以将整个 MongoDB 集合缓存在内存中以提高查询性能吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48807329/

相关文章:

javascript - Node.js Web 应用程序的国际化 (i18n)/本地化

node.js - 从S3存储桶流式传输视频

html - 如何在 Express (Node.js) 模板中为 Internet Explorer 保留条件 CSS 语句

安装在azure ubuntu中的mongodb无法连接

javascript - 将双向实时连接扩展到数十万的最佳方法是什么?

javascript - 在 Jade 中渲染单个 block

java - Spring data util对重命名json名称

c# - 如何在mongodb的一个查询中从两个集合中获取数据?

MongoDB 聚合 : How to put results from lookup into a nested array?

java - Morphia:使用 Morphia 过滤 ArrayList 中的元素