Autobig标签的使用说明

为了应对海量数据的清单式列表在读取、展现及导出过程中可能会出现速度过慢、内存溢出、系统死机等问题。满足大数据量的报表展示需求,为客户提供了autobig分页标签发布报表。

Autobig实现原理:

 

把报表根据每页展现行数,以及从数据库里获取的最大行数,分成n页,然后把所有页的报表定义组成一个报表组,利用报表组实现了逐页计算逐页输出功能。

 

使用autobig标签需要配置reportConfig.xml文件中alwaysReloadDefineno,启用缓存。此项设置的目的是使得设置的缓存页数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=”" 直接赋一个值就可以,展现速度正常

热门文章