问题描述:在通常的三层构架下,客户通过Browser请求Web服务器查询数据库,而查询结果是上千条甚至是上百万条记录,要求查询结果传送到客户端浏览器并分页显示。

考虑因素:

1. Web服务器的资源消耗,包括:内存(用来存储查询结果),数据库相关资源(数据库连接对象,ResultSet对象等等);

2. DB服务器资源的消耗,包括游标,会话等等。

3. 网络开销,包括与数据库建立会话,传输查询结果等等。

JDBC中的几个重要Class:

A ResultSet object maintains a cursor pointing to its current row of data. Initially the cursor is positioned before the first row. The next method moves the cursor to the next row, and because it returns false when there are no more rows in the ResultSet object, it can be used in a while loop to iterate through the result set.

ResultSet是直接在数据库上建立游标,然后通过ResultSet的行位置定位接口来获得指定行位置的记录。当用户通过get方法获取具体纪录的内容时,ResultSet才从数据库把所需数据读到客户端。

Oracle的ResultSet实现似乎会在本地缓存用户读取过的数据,导致内存消耗会随读取数据的增加而增加,这样,如果一次查询并读取海量数据,即使读出数据后马上丢弃(比如直接写入文件),内存消耗也会随查询结果的增加而递增。

The RowSet interface extends the standard Java.sql.ResultSet interface. A RowSet object may make a connection with a data source and maintain that connection throughout its life cycle, in which case it is called a connected rowset. A rowset may also make a connection with a data source, get data from it, and then close the connection. Such a rowset is called a disconnected rowset. A disconnected rowset may make changes to its data while it is disconnected and then send the changes back to the original source of the data, but it must reestablish a connection to do so.

RowSet是JDBC2.0中提供的接口,Oracle对该接口有相应实现,其中很有用的是 oracle.jdbc.rowset.OracleCachedRowSet。 OracleCachedRowSet实现了ResultSet中的所有方法,但与ResultSet不同的是,OracleCachedRowSet中的数据在Connection关闭后仍然有效。

java 游标 查数据_Java中的大量数据查询相关推荐

  1. java 生成pdf文件_Java 中HTTP响应数据生成PDF,PDF文件的读取

    将HTTP响应数据生成PDF,这一步的话,就比较坑,浪费了好多时间,查了很多资料,也是我想把它记录下来的主要原因, 废话少说,先说踩的坑 1.区分字符流.字节流 这里可以百度一下,但是简言之就是: j ...

  2. java中怎么使用json数据_java中使用Json数据

    PS:11.15看了一下午终于把项目中flexigrid中复杂封装数据类型--->json-->返回前台显示的整个过程:原理看明白了!!! 1.json理解: 步骤1: 就是把后台的Lis ...

  3. java 导出订单明细_java中的excel数据的导入和导出

    /*** 导出供应商的数据*/@Overridepublic voidexport(OutputStream os, Supplier t1) {//查出符合条件的所供应/客户的列表 List sup ...

  4. Java实验9 T3.对二进制数据文件中的所有数据求和

    题目要求 (对二进制数据文件中的所有数据求和)假设已经使用DataOutputStream中的writeInt(int)创建一个名为Exercise 19_3.dat的二进制数据文件,文件包含数目不确 ...

  5. 比较Excel数据透视图中的年度数据

    If you have a couple of years of daily data in Excel, you can use a pivot chart to quickly compare t ...

  6. pandas删除数据行中的重复数据行、基于dataframe所有列删除重复行、基于特定数据列或者列的作何删除重复行、删除重复行并保留重复行中的最后一行、pandas删除所有重复行(不进行数据保留)

    pandas删除数据行中的重复数据行.基于dataframe所有列删除重复行.基于特定数据列或者列的作何删除重复行.删除重复行并保留重复行中的最后一行.pandas删除所有重复行(不进行数据保留) 目 ...

  7. lmbs PHP,PHP 清空 MySql 指定数据表中的所有数据

    PHP 清空 MySql 指定数据表中的所有数据 PHP 清空 MySql 指定数据表中的所有数据,在烈火小编在网上闲逛时,这是某技术博客的一篇文章,说是文章,并没有文字,只有代码,经过测试可以使用, ...

  8. layui数据表格中导出所有数据的简易解决办法

    layui数据表格中导出所有数据的简易解决办法 官方文档的困惑 解决办法 官方文档的困惑 首先要说明的是:layui在 table 的工具栏内置了数据导出按钮,如果你是用它内置的导出按钮来导出数据,是 ...

  9. mssql sqlserver 禁止删除数据表中指定行数据(转自:http://www.maomao365.com/?p=5323)

    转自:http://www.maomao365.com/?p=5323 摘要: 下文主要讲述,如何禁止删除数据表中指定行数据 最近收到用户一个需求,禁止所有人删除"表A"中,ID ...

最新文章

  1. 棉花糖主机送mysql_mysql操作
  2. word精华样式篇之三使用样式集让所有文档风格统一
  3. python matplotlib.pyplot中add_subplot subplot函数的用法与区别(其实没什么区别)
  4. 福建师范大学计算机组成原理期末试卷,福建师范大学2020年8月课程考试《计算机组成原理》作业考核试题...
  5. python回顾(九)——函数高级,递归函数,匿名函数
  6. CIDR地址块及其子网划分
  7. andorid 查看OpenCv Mat的Debug信息
  8. 了解你所不知道的SMON功能(五):Recover Dead transaction
  9. 【Python学习】 - 使用PIL, cv2, keras.preprocessing, scipy.imageio, matplotlib.image, skimage读取和保存图像的方法
  10. 数据库的辅助工具:My-SqlViewer
  11. Linux学习总结(73)——Linux高频命令大总结
  12. 论文笔记:Visual Question Answering as a Meta Learning Task
  13. 运维架构师-并不遥远的彼岸
  14. 9,求整数的二进制中1的个数《剑指offer》
  15. 一天学习一点之如何安装nodejs
  16. SmtpClient SSL 发送邮件异常排查
  17. 算法导论第三版 16.1-5习题答案
  18. 【终于等到你】微信转发语音的方法 - 语音信息转发
  19. 魔兽8.0最新服务器人口普查,魔兽世界8.0最新人口普查: DH稳坐第一职业宝座 同盟种族人数惨淡...
  20. python 改变图片像素值

热门文章

  1. App_Offline.htm 问题解决
  2. 记录yarn启动报错
  3. echarts的x轴文字倾斜展示
  4. Android+Blockly大作业(含登录注册系统、碎片式浏览、Blockly设计)
  5. 金融区块链标准规范解读
  6. win10系统用chew-wga激活重启后蓝屏
  7. windows 7下进入System帐号并运行桌面系统
  8. 如何利用在线帮助中心解决客户问题?
  9. 鬼故事~ 媚娘[完结版]
  10. 橡胶垫片的特点与用途