我有一个 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/