我在生成结果超过 500,000 行的报告时遇到问题。相信我,这个结果已经被过滤了。查询 (DB2( 几乎立即运行,但 resultSet 中的交互速度慢得离谱。
我正在做一些测试来尝试改进这个过程,但到目前为止还没有成功。- 起初是转换 bean 的直接数据(用于报告生成(,但速度非常慢,数据库超时。- 我试图变成一个更简单的测试过程(结果设置为哈希映射(失败- 对语句使用了 setFetchSize 配置 (2000(- 我查看了使用线程安全的可能性,但不支持resultSet
已经修改了银行的超时以增加处理时间,但我的问题没有解决。
无论如何,已经尝试了几种可能性。有人对我的问题有任何提示或解决方案吗?
首先让我澄清一下,报告,报告生成任务永远不应该在应用程序 DB 上完成。
应用程序数据库,事务数据库设计用于快速事务,不涉及繁重的结果获取,处理。这些任务应在 DW 服务器或备用副本上处理。
第二
报告应用程序逻辑应在不太拥挤的时间内处理(当用户不使用系统时,即晚上(
- 如果可能,将您的处理逻辑以过程(数学部分(的形式放在数据库端,并具有高效的查询,以提高处理和数据传输方面的性能。
- 尝试使用触发器/计划作业等定期收集报告,并在创建报告时使用这些中间报告而不是数据库(正如您所说,您的查询执行不是问题,但这将节省对大型集合的迭代。您可以使用中间报表中的值,因此迭代频率会更低。