读取大型ResultSet的速度很慢

时间:2014-12-17 01:46:48

标签: java performance db2 resultset c3p0

我在生成报告时遇到问题,结果超过500,000行。相信我,这个结果已经过滤了。 查询(DB2)几乎立即运行,但resultSet中的交互非常慢。

我正在做几次测试以尝试改进这个过程,但到目前为止还没有成功。 - 起初是转换bean的直接数据(用于报告生成),但速度很慢,数据库给出了超时。 - 我试图变成一个更简单的测试过程(resultSet到HashMap)失败了 - 使用setFetchSize配置(2000)作为语句 - 我查看了使用线程安全的可能性,但不支持resultSet

已经修改了银行的超时以增加处理时间,但我的问题没有得到解决。

无论如何,已经尝试了几种可能性。有没有人对我的问题有任何提示或解决方案?

1 个答案:

答案 0 :(得分:0)

首先让我说清楚, 报告,报告生成任务绝不应在应用程序数据库上完成。

应用程序数据库,事务数据库专为快速事务而设计,不涉及繁重的结果获取,处理。应在DW服务器或备用副本上处理这些任务。

其次,

报告应用程序逻辑应该在不太拥挤的时间内处理(当系统不被用户使用时,即夜晚)

  1. 如果可能的话,以程序(数学部分)的形式将处理逻辑放在数据库端,并使用有效的查询来提高处理和数据传输方面的性能。
  2. 尝试使用触发器/预定作业等定期收集报告,并在创建报告时使用这些中间报告而不是DB(正如您所说,查询执行不是问题,但这样可以节省大量的迭代。)可以使用中间报告中的值,因此迭代频率会更少。