加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – ResultSet的Oracle JDBC性能

发布时间:2020-12-15 03:15:14 所属栏目:Java 来源:网络整理
导读:到目前为止,我一直在使用这样的查询我的数据库工作得非常好: PreparedStatement prepStmt = dbCon.prepareStatement(mySql);ResultSet rs = prepStmt.executeQuery(); 但后来我需要使用rs.first();为了能够多次迭代我的rs.所以我现在用 PreparedStatement p
到目前为止,我一直在使用这样的查询我的数据库工作得非常好:
PreparedStatement prepStmt = dbCon.prepareStatement(mySql);
ResultSet rs = prepStmt.executeQuery();

但后来我需要使用rs.first();为了能够多次迭代我的rs.所以我现在用

PreparedStatement prepStmt = dbCon.prepareStatement(mySql,ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_UPDATABLE);

我的问题与两者的表现有关.如果我使用第二种选择,我会失去什么?使用第二个选项会对我到目前为止编写的代码产生任何负面影响吗?

PS:请注意,我的应用程序是一个使用后端Oracle 11g数据库的多用户,数据库密集型Web应用程序(在Weblogic 10.3.4上).

谢谢大家的关注.

UPDATE

我的最大重新设置大小将小于1000行和15-20列

解决方法

由于Oracle游标是仅向前结构,为了模拟可滚动游标,JDBC驱动程序通常需要将结果缓存在内存中,如果它希望能够确保在迭代时返回相同的结果结果第二次.根据查询返回的结果的数量和大小,可能涉及应用程序服务器上消耗的大量额外内存.另一方面,这应该意味着第二次迭代ResultSet应该比第一次更有效.

所需的额外内存是否有意义取决于您的应用程序.你说最大的ResultSet将有1000行.如果你认为每行是500字节(这显然取决于数据类型 – 如果你的ResultSet只有一堆数字,它会小得多,如果它包含一堆长描述字符串,它可能会大得多),1000行是每用户500 kb.如果您有1000个并发用户,那么只有500 MB的存储空间可能并不令人望而却步.如果你有100万个并发用户,另一方面,这是500 GB,这可能意味着你要购买一些新的服务器.如果您的行是5000字节而不是500,那么您所说的是5 GB的RAM,这可能是应用程序服务器运行您的应用程序所需的大部分内存.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读