我正在研究一个API来查询数据库服务器(在我的情况下是Oracle)来检索大量的数据。 (这实际上是一个位于JDBC之上的图层。)SQL连接生存期
我创建的API试图尽可能限制将每个查询信息加载到内存中。我的意思是我更喜欢迭代结果集并逐个处理返回的行,而不是在内存中加载每行并稍后处理它们。
但我想知道如果这是最好的做法,因为它有一些问题:
- 在整个处理过程中的结果集保存,如果处理是,只要检索数据,这意味着我的结果集将打开两倍长
- 在我的处理循环中执行另一个查询意味着在我已经使用另一个结果集的同时打开另一个结果集,但同时开始打开太多结果集可能不是一个好主意。
另一方面,它具有一定的优势:
- 我从来没有在内存中的数据结果集的多个行,因为我的查询往往返回100k左右的行,它可能值得。
- 由于我的框架主要基于函数式编程概念,所以我从不依赖同时存在于内存中的多行。
- 在数据库引擎仍然返回其他行时返回的第一行开始处理是一个很好的性能提升。
在回答甘道夫,我添加了一些更多的信息:
- 我总是要处理整个结果集
- 我没有做的任何行的聚集
我正在与主数据管理应用程序集成并检索数据以验证它们或使用多种不同格式(到ERP,到Web平台等)导出它们。
“SQL server(Oracle)”是什么意思? – Andomar 2009-05-27 13:24:19
试图澄清,对于混淆感到抱歉 – 2009-05-27 13:43:21
衡量我们真正需要了解更多关于如何使用查询结果的好处。你会一直处理整个结果集吗?您是将每个结果的值相加,还是可以在数据库中完成的任何其他聚合工作? – Gandalf 2009-05-27 17:34:12