我想问专家们,从Java应用程序(使用JDBC)从oracle 11g数据库中获取3000到5000条记录的建议是什么。我们的标准是总是调用存储过程。
我做了一些研究,发现ref游标基于JDBC获取计数属性对数据库进行多次往返旅行。(在处理参考游标时,是否有人会对端到端流的数据如何存储在oracle和JVM中的内存中有更多的了解?)
我认为集合更有效,因为数据是从oracle db (使用大容量收集)一次性发送给调用方(Java)的。使用这种方法,我们可以避免从Java到Oracle服务器的多个网络调用。这是一个真实的假设吗?
感谢你的帮助!
发布于 2015-10-28 14:59:21
这是一个比任何人都愿意在帖子中承诺的更大的话题。这里有一个链接,讨论如何使用Oracle管理读取一致性。整个页面可能是一个很好的阅读,可以了解服务器上正在发生的事情。还有一篇文章这里讨论了使用集合会发生什么。如何将集合返回到JDBC客户端(这不是我曾经尝试过的东西)?
本质上,性能涉及很多方面,从如何配置数据库到如何将网络调优到磁盘性能、客户端性能等等。
简单地说,你需要尝试一些事情。检索3-5 K记录不是很多,这取决于记录有多大,你是否带回来网络。如果它们是20个字节的记录,那么您的网络(MTU?)大小是4k块,你可以容纳约200个记录在一个区块。在某种程度上,你会遇到收益递减的规律。
我习惯使用存储过程,但您不需要这样做。这将取决于查询的复杂性(表的数量和联接的类型),以及DBA这样的人是否能够进去查看查询所做的事情。
担心网络旅行并不那么重要,因为只有那么多的数据可以填充到数据包中。无论您使用什么,都会有许多网络旅行,这取决于您的用例,以确定将其降到最低程度有多重要。
https://stackoverflow.com/questions/33392891
复制相似问题