我们正在使用 morphia 0.99 和 java 驱动程序 2.7.3 我想了解使用 fetch
逐条获取记录和通过 asList 检索结果之间有什么区别(假设有足够的内存通过 asList
检索记录)。
我们遍历一个大的集合,在使用fetch
的时候,在fetch操作的过程中,有时会在服务器上遇到cursor not found异常
,所以我需要执行另一个命令来继续,这可能是什么原因?
1-)fetch the record
2-)do some calculation on it
3-)+save it back to database again
4-)fetch another record and repeat the steps until there isn't any more records.
那么哪个会更快?使用 asList 一条一条地获取记录或检索大量结果,或者使用 morphia 实现它们之间没有任何区别吗?
感谢您的回答
最佳答案
据我所知,fetch()
从数据库中流式传输结果,而 asList()
会将所有查询结果加载到内存中。因此它们都将获得与查询匹配的每个对象,但是 asList()
会将它们全部加载到内存中,而 fetch()
则由您自行决定。
对于您的用例,它在 CPU 方面都不会更快,但 fetch()
应该使用更少的内存,并且在您有大量数据库记录的情况下不会崩溃。
关于mongodb - Morphia 在性能方面 fetch 和 asList 之间有区别吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14062251/