1. 概述编辑
1.1 版本
报表服务器版本 |
---|
11.0 |
1.2 应用场景
模板数据量较大时,预览速度将变慢,影响用户体验。FineReport 11 内置新计算引擎,主要用于提升大数据量场景下分组明细、过滤、汇总等简单模板的性能,可以明显提升这些模板的展现速度。
1.3 实现原理
通过对模板的预处理(编译),将一些模板中的设置编译为 SQL 语句,交由 SQL 处理,同时按需取数,一次只取出部分数据,同时后台分页计算。
这是一种可以规避大数据量带来的压力,优先确保首页快速加载展现的一种计算方式。
2. 适用范围编辑
2.1 支持的功能
相比行式引擎,新计算引擎新增支持的功能:
支持单元格过滤及汇总求和。
支持条件属性行高列宽,超级链接。
支持自适应。
支持单元格内容提示使用公式。
支持使用多个互相无过滤关系的数据集
新增数据源支持。
注:支持的数据源有 MySQL、ADS、huaweiHive、CUBRID、Apache Derby、Firebird、H2、SQLite、HSQL、MariaDB、PostgreSQL、SAP HANA、Oracle、Teradata、SQL Server、SQL Server2000、SQL Server2008、Access、ASE、Informix、Ingres、Amazon Redshift、Vertica、Apache Phoenix、Apache Kylin、Impala、GBase 8s、Transwarp、DB2、Sybase。
2.2 暂不支持的功能
由于后台分页取数计算逻辑限制,新计算引擎暂不支持部分功能在参数面板以外使用:
不支持非 JDBC 数据源。
不支持树数据集、关联数据集、存储过程。
不支持 扩展后排序
不支持层次坐标、SQL 公式和“报表函数”类型公式。
条件属性不支持行后分页和控件。
不支持悬浮元素、分栏、sheet 间运算。
不支持分页预览展示图表。
不支持单元格插入子报表,详情可参见:嵌入式主子表
不支持不同数据集间过滤。
包含 年份选择控件 的 cpt 模板,使用新引擎后,年份选择控件将失效。
不支持移动端使用。
注1:上述不支持的功能使用新引擎时,日志中会有 error 的报错提示 unsupported feature。此时为避免模板预览报错,会自动走老引擎的后台计算(即这些模板不会有性能上的提升)。
注2:新计算引擎支持了分组,但整体上分组展示的性能要逊色于列表展示,为了更好的性能,如无分组需求,建议将模板首列设置为列表。
2.3 新旧引擎对比
旧引擎和新引擎的后台计算逻辑区别如下表所示:
计算逻辑 | 旧引擎 | 新引擎 |
---|---|---|
数据列( 筛选、过滤、排序等 ) | 将数据集数据抽取到服务器内存,在内存中筛选和过滤 数据量较大时,有内存溢出风险 | 将设置编译为 SQL 语句,由数据库执行 速度较快,数据量越大越明显 |
按需计算 | 不支持,只能全量计算所有 | 支持 |
公式解析计算 | 性能较慢,不支持动态参数缓存 | 通过预编译提前确定单元格关系,避免计算时递归遍历 支持动态参数缓存 |
序列化存储 | 模板为单个 XML,资源文件转为字符串存储 存在大量资源文件时,读取与保存模板会比较慢 | 模板为 zip 格式,里面内容为元数据对象,无需将资源文件转为字符串存储 模板体积较大时,读取与保存不会出现卡顿 |
前端渲染 | 支持新前端渲染 | 支持新前端渲染 |
新引擎是流式计算的,具有首屏快速展现的功能,可以在首屏出来后进行点击翻页查看数据,无需等待所有数据处理完。新旧引擎报表展现速度对比如下图所示:
左边为旧引擎,右边为新引擎。
2.4 功能使用指导
新计算引擎操作文档请参见:新计算引擎使用
使用新计算引擎后,点击 FineReport 设计器菜单栏中的「模板」,新增「计算属性」设置项,具体介绍请参见:模板计算属性
新引擎预览可以有效解决模板预览慢的问题,不过导出数据集时还是比较慢。通过在工具栏上自定义一个按钮,输入自定义 JS 事件即可实现大数据集导出,可以明显提升导出速度,详情请参见:新计算引擎大数据集导出