【适用范围】
EOS5.3
【内容】
1)EOS报表支持的最大记录数是多少?
EOS报表支持的最大记录数应当是2**32(2的32位),65535是输出Excel格式时能支持的最大记录数。
2)使用html格式的报表展示大数据量时,如近6万条记录的人员信息,全部展示,一跑程序就死掉,能否分页展示?
目前,EOS报表还不支持Server端分页,这个功能将在后续版本中推出。建议采用EOS数据源,通过EOS的分页查询实现。若还需要打印或者导出Excel,再另外做一个报表用于打印和导出。
【备注】
一、在项目中已经遇到的大数据量报表一般有几种情况:
a) 生成的报表需要保存下来,随时查看。这种情况一般输出Excel格式保存报表。建议这种情况下用定时器把报表的生成放到夜间做,工作时间只是查看报表而不运行报表;
b) 生成的报表只用HTML格式即时查看,结果不保存。这实际上是查询功能,一般报表格式简单,比如显示日志、人员明细等,查询出的结果只有很少部分数据会被查看。这种情况下有两种解决办法,或者要求用户输入更多查询条件、限制返回的记录数,或者直接用EOS的单表查询功能来开发。
即使EOS报表今后提供了分页功能,单纯依赖报表的分页功能并不能完全解决大输出量报表的性能问题,更多的还是需要应用开发中采取合适的策略。
二、大数据量的导出要结合JVM的实际承受情况,如下的测试环境和结果仅供参考:
测试机器:联想双核Interl(R) Core(TM) Duo CPU T7250 @2.00GHZ 778MHz,2G内存,
EOS5.3(2886) For Tomcat
JVM参数-Xms 1024M -Xmx1024M
测试结果表明,eos报表在输出5000左右记录报表时候速度很快,7秒左右就可以;1万左右需要12秒;2万条需要25秒;2.5万条需要40秒;2.8万55秒;大于2.8万会有outofmemoryexception
对于要导出大数据量报表( 大于2万 )主要可以采用以下几种方式:
1 用程序方式导出成TXT,不建议excel方式,这种方式同样要消耗大量系统资源
2 用钻取的方式,将人员以部门为条件,分层取出 |