| 报表设计器版本 |
|---|
| since 9.1 |
在报表预览过程中,当数据量较大或报表结构较为复杂时,系统需要一次性加载并计算全部数据,可能会带来以下问题:
内存占用过高,严重时可能触发 OOM(内存溢出)
报表预览耗时过长,影响用户体验
预览界面可能直接提示错误(如下图所示)
上述问题在复杂报表、明细数据量较大的场景下尤为明显。
VeryReport 提供 后台分页 功能,通过按页计算与加载报表数据,有效降低单次计算与内存占用。
启用方式如下:
1. 打开报表设计器
2. 在上方菜单依次点击 「设置」 → 「报表引擎管理」
3. 勾选 「启动后台分页」
4. 保存设置后生效
后台分页并非简单的前端分页,而是由报表引擎在服务端对报表进行分页探测与计算重排,仅计算并返回当前页所需的数据。其核心流程包括:
1. SQL 优化
根据不同数据库特性,对原始 SQL 进行重写与优化
提高查询执行效率,减少全表扫描与无效计算
2. 字段裁剪
仅查询当前报表页面实际使用的字段
自动舍弃无关列,降低结果集大小与内存占用
3. 排序指令编排
根据报表设计中定义的排序规则
对必要字段进行服务端排序,避免无效排序计算
4. 按页计算
仅编排并执行当前页所需的数据计算逻辑
避免一次性加载全部页数据
5. 缓存复用
充分利用引擎内部缓存机制
减少重复计算与重复数据读取,提高整体性能
通过以上策略,后台分页能够显著降低报表预览阶段的资源消耗,同时提升响应速度。
后台分页功能目前适用于以下场景:
✅ 复杂报表
包含多区域、多计算逻辑的复杂报表结构
✅ JDBC 数据集
仅支持基于 JDBC 的数据集类型