历史版本17 :性能优化指导手册 返回文档
编辑时间: 内容长度:图片数:目录数: 修改原因:

目录:

1. 概述编辑

1.1 为何要进行性能优化

  • 您是否遇到访问一张报表时加载时间很长?或者频繁访问大数据量报表占用了过多的服务器内存而导致内存溢出?又或者过多的用户并发访问的时候服务器承受压力过大导致服务器崩溃?

  • 您是否有这样的感想,访问了一张复杂报表,数分钟后再次访问了同样的报表,却发现还需等待相同的时间才看到结果,这太不人性化!

  • 您是否因为频繁地出现请求超时而恼火?

若您遇到了以上的种种情况,这说明您的报表系统需要进行性能优化,赶紧行动起来吧,让您的报表系统运行地更快更顺畅!

1.2 影响性能的因素

1.2.1 报表取数

一般来说,报表越复杂,所涉及到的后台数据库基础表也就越多。除了格式简单的列表式报表需要在报表中显示超大的数据量外,大部分的报表是从几十万或者几百万的源数据中筛选,运算,返回几十条或几百条不等的数据结果。如果取数使用的方法不恰当,报表取数时间就会过长,从而影响性能。

1.2.2 报表制作

报表制作时往往会使用字段的关联、高亮、数据字典、公式计算等等报表内置的功能,如果这些功能使用的不正确,或者报表存在多余的设置,这样就会因为这些不必要的设置而增加计算时间,从而影响性能。

1.2.3 服务器性能

FineReport 作为纯 Java 软件,可以与 J2EE 的应用无缝集成,集成至服务器的报表就会继承服务器的资源。服务器的虚拟内存、连接池的设置等等往往会导致很多性能问题。

2. 索引编辑

简单说明参考文档备注
问题排查思路
大数据量模板排查思路
-
大数据量模板优化思路
-
大数据模板导出慢问题排查
-
模板性能问题排查方法
-
影响页面加载速度的因素
-

不一次性加载全部数据,分页展示数据

新计算引擎插件介绍
  • 自动后台分页查询及计算,提升大数据量明细表的查询性能

  • 纵向折叠树报表性能优化,通过前端异步加载/后台异步取数优化折叠树性能

启用行式引擎执行层式报表
建议优先使用新计算引擎插件
数据量较大且对实时性要求不高
抽数缓存插件使用步骤

将数据集查询的结果缓存

  • 优化低实时性报表中,取数性能较差的场景

  • 优化多数据集查询的低实时性大屏性能

数据集缓存
与抽数缓存插件功能类似,建议优先使用抽数缓存插件
模板计算结果缓存
将模板计算结果缓存
出现耗时较长的情况时,定位模板的耗时分布模板性能分析插件
可检查出:取数耗时、计算耗时
报表执行过程
可以对报表的执行过程进行实时监控
SQL 执行监控

提供监控 sql 工具,便于进行取数耗时分析

优化模板巧用参数注入
  • 可以让两个不同数据集的数据一一对应

  • 取单元格的值

  • 将单元格数据作为参数传给数据集

  • 可以取其他单元格数据作为条件来加入查询sql

优化报表取数
  • 通过控制数据量的大小和对数据的提前预处理来提高报表的性能

  • 可以解决查询数据效率比较慢的问题

优化报表计算时间

模板设置不规范导致加载慢,规范制作方式实现优化

打开报表经常出现等待排队中

报表设计器内存修改
-
Tomcat修改内存
-