报表管理FineReport报表性能优化(1)

报表管理FineReport报表性能优化(1)

ID:37878531

大小:307.04 KB

页数:7页

时间:2019-06-01

报表管理FineReport报表性能优化(1)_第1页
报表管理FineReport报表性能优化(1)_第2页
报表管理FineReport报表性能优化(1)_第3页
报表管理FineReport报表性能优化(1)_第4页
报表管理FineReport报表性能优化(1)_第5页
资源描述:

《报表管理FineReport报表性能优化(1)》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、报表管理FineReport报表性能优化(1)1.为何要性能优化您是否遇到访问一张报表时加载时间很长?或者频繁访问大数据量报表占用了过多的服务器内存而导致内存溢出?又或者过多的用户并发访问的时候服务器承受压力过大导致服务器崩溃?您是否有这样的感想,访问了一张复杂报表,数分钟后再次访问了同样的报表,却发现还需等待相同的时间才看到结果,这太不人性化!您是否因为频繁地出现请求超时而恼火?您是否......若您遇到了以上的种种情况,这说明您的报表系统需要进行性能优化,赶紧行动起来吧,让您的报表系统运行地更快更顺畅!2.影响性能的因素以上种种性能缺陷是如

2、何产生的呢?一般有如下几方面存在性能问题:2.1报表取数一般来说,报表越复杂,所涉及到的后台数据库基础表也就越多。除了格式简单的列表式报表需要在报表中显示超大的数据量外,大部分的报表是从几十万或者几百万的源数据中,筛选,运算返回几十条或几百条不等的数据结果。如果取数使用的方法不恰当,报表取数时间就会过长,从而影响性能。2.2报表制作报表制作时往往会使用字段的关联、高亮、数据字典、公式计算等等报表内置的功能,如果这些功能使用的不正确,或者报表存在多余的设置,这样就会因为这些不必要的设置而增加计算时间,从而影响性能。2.3服务器性能FineRepo

3、rt作为纯JAVA软件,可以与J2EE的应用无缝集成,集成至服务器的报表就会继承服务器的资源。服务器的虚拟内存、连接池的设置等等往往会导致很多性能问题。3.FineReport如何优化性能针对影响性能的因素,FineReport有不同的优化方案。如对SQL的优化,使用存储过程等优化取数过程;减少冗余单元格及不必要的设置从而加快报表计算时间;采用并发设置,缓存设置,集群等提高服务器性能等等。言而简之,FineReport性能优化,主要包括两个方面:一、报表性能优化;二、服务器性能优化。具体优化方法我们将在本章下面进行详细介绍。4.谁需要进行性能优

4、化这一部分文档适用于初步掌握了报表设计,且需要对报表的性能做进一步优化的报表设计者;或者报表开发完毕,在向服务器部署的过程中,需要对服务器进行优化的部署工程师。报表执行过程报表的执行过程大体可分为两步:1、报表计算;2、页面转换。报表计算过程:先读取我们的sql语句,将完整的sql语句传至数据库服务器,由数据库返回数据给报表服务器,报表服务器进行数据列的扩展、汇总、关联、公式运算等计算,最终生成报表结果。页面转换过程:报表计算完成后生成xml页面,需要转换为html页面才能在浏览器中查看。针对这一过程FR是可以实时监控的。监控方法是将服务器的l

5、og输出级别设为“普通信息”,就能在控制台上看到每一步使用的时间。1.设置日志输出级别修改日志输出级别为“显示普通信息”,如下图设计器中设置:2.查看报表执行过程2.1打开模板打开FR设计器,打开里面自带的模板:%FR_HOME%WebReportWEB-INFreportletsgettingstarted.cpt2.2清空日志点击分页预览前,先清空日志。3.浏览器端访问报表点击分页预览,输入参数条件后,点击查询;等到报表在浏览器上完全展示出来后,查看日志窗口的信息:从日志中我们可以对报表的执行过程进行实时监控。优化报表取数1.取数原

6、理设计器拼出最终的SQL,将SQL语句传给数据库,数据库执行,将数据返回给设计器。由于计算过程首先要通过SQL语句从数据库中取数据,我们可以通过控制数据量的大小和对数据的提前预处理来提高报表的性能。下面是一些优化的方法。2.优化SQLFineReport报表的数据集采用的是表模型,也就是说通过SQL这种DSL语言,从数据库通过简单查询或各种组合关联查询得到一个关系表,而这部分SQL查询根据各种数据库产商长时间的优化(比如建立索引),已经非常成熟。数据集一般要通过FineReport报表模型的复杂处理才能生成最终的表样。因此,从数据库SQL查询取

7、出数据量越少,FineReport报表模型需要做的复杂处理和计算就越少,所花的时间和内存就少,从而可以提高性能。2.1SQL语句取具体的字段我们一般会用select*from这样的形式将一个数据库表中所有的字段都取出来,而其中一些字段是报表中不需要用到的,例如报表中只需要用到三个字段,但是数据库中实际的表有十个字段,一些初学者习惯性的用select*fromtable1,这样相当于把十个字段的数据都取到报表服务器端,增加了报表服务器端的内存占用以及减慢了运算速度,所以SQL语句中尽量不要用“*”号,而是写上具体的字段,能够减少报表服务器端的内存

8、占用,加快报表的运算速度。2.2SQL中直接分组代替报表中分组一些汇总类型的报表,例如制作一张订单总额的表,可能会从订单明细表中取出大量的数据记录,然

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。