快逸报表如何处理大数据量报表需求
大数据量报表的展现在web报表复杂报表设计" target="_blank" class="quieeLink1">设计中是不可避免的,随之引发的一系列性能问题也着实让报表开发人员头痛不已,内存不足、内存占用太多、内存溢出。。。
本文就来介绍一下快逸报表是怎样对应大数据量的。
方法一:建立快逸数据集时的优化sql语句
原则:尽量在sql里对大量数据进行group
尽量在sql里对大量数据进行sort
尽量在sql里对大量数据进行过滤,如用where子句
尽量不用select * from选取全部大量数据
单元格表达式正确使用select XXX和 ds1.XXX
原理:sql语句中的分组、排序、过滤是在数据库端进行,数据库中有索引,且数据库大都是c语言开发的,数据运算速度快,这样报表服务器端的取数和计算效率就会大大提升,报表服务器压力也会减少很多。
方法二:采用存储过程
将大量数据直接改用存储过程做数据源,快逸报表支持存储过程数据源,原理基本和方法一一样,利用数据库端分担服务器端的压力。
快逸报表如何调用存储过程:点击进入
方法三:合理使用多数据集
原则:在网格式、分组式、交叉式报表中尽量用单数据集
在多源分片、主子报表中尽量用多数据集
原理:多数据集的使用避免了表间叉乘,减少了数据量,加快了取数速度和数据库的运算速度,而且可以大大节省开发和后期维护的费用。
方法四:适当调整应用服务器的JVM值
在硬件允许的情况下适当调整jvm值,可以使服务器效率更高一些。
具体调节方法请参见:五种常用web服务器jvm参数设置:点击进入
方法五:优化快逸配置文件中缓存和并发的设置
在快逸报表服务器配置文件reportconfig.xml中可以设置报表服务器的缓存和并发数,一定程度上可以缓解服务器的压力
缓存:当某个客户端访问某个报表,引擎将其计算出来后,会将运算结果缓存下来。同一个客户端访问完该报表后,如果需要对同一报表结果进行别的操作,例如打印、导出、翻页等,引擎也直接从缓存里取报表结果,而不必重新计算。
并发:服务器的承载能力是有限的,通过并发控制有效控制服务器的内存使用量,来最大程度提高服务器效率
具体配制方法请参看:设计器—帮助—使用手册—J2EE部署手册—3.3.2 reportConfig.xml
方法六:终极杀手锏—分页机制
1. 按页取数
原理:每次只取出一页数据进行报表运算,当翻页时取下一页数据进行运算,这样每次内存中只保留一页的数据,大大加快了运算速度,减轻了内存压力。
2.分页计算标签
原理:以页为单位对数据进行读取和展现及导出等操作,大大降低了内存占有量,提高了运行效率,避免内存溢出等问题。
这两个设置是快逸报表处理大数据量的杀手锏,一般因为大数据量引发的内存问题都可以用这两个设置解决。此功能为收费功能,需要收费版本的用户可以向我们的客服人员索取相应教程。