MongoDB:为什么我们应该在使用光标后关闭它?

时间:2014-06-17 09:50:24

标签: mongodb memory-leaks cursor mongodb-query database

我看到人们在使用光标后关闭光标。我还在文档中读到服务器在10分钟不活动后关闭光标。

我在网上搜索但没有找到合适的答案。我是数据库和MongoDB的新手。

为什么需要关闭光标?

2 个答案:

答案 0 :(得分:15)

只有当你没有"排气时才真正需要关闭光标。结果。或者换句话说,迭代光标返回的所有可能结果。

离开"光标" open就像留下一个永远不会被重用的开放连接。这些东西不是免费的。实际上标准连接成本是1MB(大约)。所以如果你要离开很多"部分迭代"在活动连接及其内存使用方面,存在的游标存在一般开销。

如果事实上你实际上总是迭代"所有"结果(包括"限制"这是"光标修饰符")然后光标将关闭,一切正常。

一般用法是通过浏览所有结果来实际耗尽/耗尽光标。因此,没有明确需要销毁。

答案 1 :(得分:3)

这取决于您的使用情况,但至少在我的Web应用程序中 - 客户端处理关闭。 为什么?因为我的网络应用程序遵循简短的模式无状态请求处理(您从浏览器获得请求,快速构建HTTP响应 - 不到一秒钟 - 此响应依赖于mongo数据)。所以我的客户端只需要连接1秒钟。

现在,考虑一下,如果我每分钟有50个请求...我的服务器可以轻松处理它们。但如果每个请求都要持有10分​​钟的资源,它就会崩溃......例如9分钟后,我将有450个不必要的开放资源...

相关问题