1

我创建了一个使用 MongoDB 作为数据库引擎的站点,目前它仍在建设中,所以它没有获得太多流量。这意味着有一段时间没有请求,因此没有对数据库的查询。

当我最终访问使用数据库的站点页面时,MongoDB 似乎需要 4 或 5 秒才能返回,但从该请求开始,它非常快。

我找不到任何有关超时或类似情况的信息。是否只是内存中的数据库被调出,需要几秒钟才能将其调回?它在 Windows Server 2008 VM 上运行,我将它作为 Windows 服务运行。

任何帮助,将不胜感激。

4

2 回答 2

1

MongoDB 允许操作系统内核处理保存在内存中的内容(当前的“工作集”)。即使没有发生任何事情,系统仍然会将 RAM 中的对象分页到页面/交换中,即使 RAM 容量没有被征税。

解决此问题的一种方法是监视空闲状态并在后台发送查询,或者甚至让后台进程对磁盘上的文件进行监视。这在启动后预热数据库时特别有用,如果您的使用形成循环模式,同样如此。

于 2013-05-18T01:29:03.317 回答
0

像大多数样式的数据库一样,可以缓存最近的查询结果,可以将执行计划存储在一些数据库中,但似乎 mongodb 不存储查询缓存。

此外,为了提高性能,请确保您很好地实现索引,这样您就不会错误地创建全表扫描并利用某种形式的索引。使用 explain 命令查看您的查询执行计划。(http://docs.mongodb.org/manual/reference/method/cursor.explain/

http://docs.mongodb.org/manual/faq/fundamentals/

MongoDB 是否处理缓存?

是的。MongoDB 将所有最近使用的数据保存在 RAM 中。如果您为查询创建了索引并且您的工作数据集适合 RAM,则 MongoDB 从内存中提供所有查询。

MongoDB 不实现查询缓存:MongoDB 直接从索引和/或数据文件提供所有查询。

于 2013-05-17T21:56:35.293 回答