我创建了一个使用MongoDB作为数据库引擎的网站,目前它仍在建设中,因此它没有获得太多流量。这意味着有一段时间没有请求,因此没有对数据库的查询。
当我最终点击使用数据库的网站页面时,MongoDB似乎需要4或5秒才能返回,但是从该请求开始,它非常快。
我找不到有关超时或类似内容的任何信息。只是内存中的数据库被分页并且需要几秒钟才能将其重新登录吗?它在Windows Server 2008 VM上运行,我将其作为Windows服务运行。
任何帮助都将不胜感激。
答案 0 :(得分:1)
MongoDB允许操作系统内核处理内存中保存的内容(当前的“工作集”)。即使没有发生任何事情,系统仍然会将对象从RAM中分页到页面/交换中,即使RAM容量没有征税。
解决这个问题的一种方法是监视空闲状态并在后台发送查询,或者甚至让后台进程捕获磁盘上的文件。这对于启动后预热数据库特别有用,同样如果您的使用形成了周期性模式。
答案 1 :(得分: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直接从索引和/或数据文件中提供所有查询。