后台分页功能说明

1.概述

1.1 支持版本
报表设计器版本
since 9.1
1.2 问题背景

在报表预览过程中,当数据量较大或报表结构较为复杂时,系统需要一次性加载并计算全部数据,可能会带来以下问题:

内存占用过高,严重时可能触发 OOM(内存溢出)

报表预览耗时过长,影响用户体验

预览界面可能直接提示错误(如下图所示)

开启后台分页来提升报表软件计算性能

上述问题在复杂报表、明细数据量较大的场景下尤为明显。

1.3 解决方案

VeryReport 提供 后台分页 功能,通过按页计算与加载报表数据,有效降低单次计算与内存占用。

启用方式如下:

1. 打开报表设计器

2. 在上方菜单依次点击 「设置」 → 「报表引擎管理」

3. 勾选 「启动后台分页」

4. 保存设置后生效

2. 实现原理

2.1 核心原理说明

后台分页并非简单的前端分页,而是由报表引擎在服务端对报表进行分页探测与计算重排,仅计算并返回当前页所需的数据。其核心流程包括:

1. SQL 优化

根据不同数据库特性,对原始 SQL 进行重写与优化

提高查询执行效率,减少全表扫描与无效计算

2. 字段裁剪

仅查询当前报表页面实际使用的字段

自动舍弃无关列,降低结果集大小与内存占用

3. 排序指令编排

根据报表设计中定义的排序规则

对必要字段进行服务端排序,避免无效排序计算

4. 按页计算

仅编排并执行当前页所需的数据计算逻辑

避免一次性加载全部页数据

5. 缓存复用

充分利用引擎内部缓存机制

减少重复计算与重复数据读取,提高整体性能

通过以上策略,后台分页能够显著降低报表预览阶段的资源消耗,同时提升响应速度。

2.2 适用范围与限制

后台分页功能目前适用于以下场景:

✅ 复杂报表

包含多区域、多计算逻辑的复杂报表结构

✅ JDBC 数据集

仅支持基于 JDBC 的数据集类型

扫码添加企业微信 免费获取1V1专属服务 企业微信专属客服