Autobig标签的使用说明
为了应对海量数据的清单式列表在读取、展现及导出过程中可能会出现速度过慢、内存溢出、系统死机等问题。满足大数据量的报表展示需求,为客户提供了autobig分页标签发布报表。
Autobig实现原理:
把报表根据每页展现行数,以及从数据库里获取的最大行数,分成n页,然后把所有页的报表定义组成一个报表组,利用报表组实现了逐页计算逐页输出功能。
使用autobig标签需要配置reportConfig.xml文件中alwaysReloadDefine为no,启用缓存。此项设置的目的是使得设置的缓存页数cachePageNum生效。实现展现、翻页、打印、导出都是逐页计算逐页输出的
Autobig标签是通过报表组形式运算展示的,报表组由子报表组成。
当页数太多时,报表组的定义本身会导致内存溢出,因为生成的报表组定义是存在内存里的。比如我们做过试验,5000万条记录,每页20条,则在1g内存情况下内存溢出。
因此,润乾添加了countPerExportPage=”100000″ 标签,通过增大每页展现的数据量,减少子表页数。
Autobig标签不能应用于以下几种情况,
分组报表。
报表和数据集表达式包含sum(),count(),等统计型函数。
由于autobig标签是通过标签:
dbType=”unknown”
dsName=”ds1″
totalCountExp=”"
pageCount=”10″
cachePageNum=”5″
做数据集的数据量统计划分,所以不能对数据集数据做分组,汇总等统计。
关于oracle数据库的特殊性需求,
当应用于oracle数据库时,执行对报表数据集数量统计时
select * from ( select t1.*, rownum rno from ( SELECT ID_BAY_BAYD,
FROM BAY_DGRA
WHERE rownum <= ? ) t1 ) where rno >= ?
[2012-09-17 17:20:46] runqianReportLogger : [DEBUG] - arg0: 5000
[2012-09-17 17:20:46] runqianReportLogger : [DEBUG] - arg1: 1
[2012-09-17 17:23:01] runqianReportLogger : [INFO ] - 取数结束,开始运算
[2012-09-17 17:23:02] runqianReportLogger : [INFO ] - 计算结束:
后台一直停滞在这一步。这是oracle数据库计算的限制。
对totalCountExp=”" 直接赋一个值就可以,展现速度正常