反馈已提交

网络繁忙

当前为10.0版本文档,只有最新版本的文档支持在线编辑修改,如果想创建/编辑文档,请移步至 最新版帮助文档

数据集缓存

  • 文档创建者:文档助手1
  • 历史版本:19
  • 最近更新:Catqiu 于 2021-07-06
  • 1. 概述

    对于大数据量报表,若每次直接从数据库取数,不仅增加数据库服务器的压力,也极大的影响了取数的速度从而降低报表的执行速度,为此 FineReport 提供了数据集缓存功能。

    FineReport 可先将其数据集查询的结果缓存下来,对于缓存下来的数据,再次使用到相同数据集时,无需再次连接数据库重新查询数据,直接使用缓存下来的结果,即使用 FineReport 的数据集共享机制,达到资源复用,减少取数时间从而提高了报表的展现速度。

    2. 缓存数据有效范围

    如果不同模板的某个同名数据集 SQL 查询语句和传入参数相同,则所有模板使用同一个数据集缓存。

    如果不同模板的某个同名数据集 SQL 查询语句和传入参数都不同,则会生成多个不同的数据集缓存。

    注:CPT 模板和 FRM 表单都支持数据集缓存。

    3. 数据集缓存方式

    数据集缓存分为缓存至内存和缓存至磁盘这两种方式。不同点在于被缓存数据的存放位置不同。

    3.1 缓存至内存

    1)设置方法:

    数据集缓存默认缓存至内存,在数据库查询窗口下拉框选择所有记录都保存在内存中,如下图所示:

    1.png

    2)设置后的效果:

    当执行数据查询时就会将查询所得数据缓存至内存中,下次执行此数据集数据查询时,会直接从内存缓存中取数。

    3)优缺点:

    空间资源有限,但效率很高,取数速度快。

    4)使用场景:

    一般使用频率高,且数据量不算太大的报表,可直接使用内存缓存。

    3.2 缓存至磁盘

    1)设置方法:

    点击下拉框选择缓存至磁盘当记录数大于,并设置行数,如下图所示:

    2.png

    缓存至磁盘是将数据缓存到服务器的磁盘中,默认是在C:\Users\用户名\.FineReport100\cache(Windows 操作系统)下。

    注:如启用了磁盘缓存,发现系统目录下没有 cache 文件夹,不要感到惊讶,虽然激活了磁盘缓存,但不是马上开始把数据写到磁盘中,而是会考虑系统的实际运行情况然后再进行处理。

    2)设置后的效果:

    记录数默认大于 0 行:表示从第 0 条数据开始,使用磁盘缓存。即只采用磁盘缓存,查询的数据全部缓存在磁盘中。

    记录数大于如 1000 行:表示查询的数据前 1000 条是缓存到内存中,剩余全部缓存至磁盘。

    3)优缺点:

    空间资源又大又便宜,几乎没有限制,但效率低,取数速度往往很慢。

    4)使用场景:

    若是数据量很大的报表,如:几十万条记录,可使用缓存至磁盘,设置恰当的行数,避免全存在内存中,导致服务器 OutOfMemory 内存溢出。如行式引擎报表,可以将使用频率高的前 N 页数据缓存在内存,剩余数据缓存在磁盘中。

    注:需要根据实际情况合理分配内存和磁盘,把那些使用频率最高的数据尽量放在内存中,从而提高在内存中的命中率。

    4. 开启数据集缓存

    4.1 设置方法

    在数据集的数据库查询界面勾选共享数据集,下拉框选择数据集缓存方式,如下图所示:

    1.png

    注:数据集缓存设置只对当前数据集有效,不同数据集需要分别设置。

    4.2 数据集共享属性设置

    我们可以对缓存下的结果进行一些设置。

    在浏览器中输入http://localhost:8075/webroot/decision,进入 FineReport 平台,选择管理系统>系统管理>缓存,可以看到数据集共享属性如下图所示:

    222

    1)共享数据集最大个数:

    缓存容器中最多数据集缓存个数,如果缓存的数据集超过设定的数目,则服务器会根据下面的缓存原则来选择缓存数据集的去留。

    2)缓存原则

    • 最近使用:优先移除最久没有被访问的缓存

    • 最不常使用:优先移除被使用次数最少的缓存

    • 先进先出:优先移除最早进入的缓存

    3)最大空闲时间:超过最大空闲时间仍然不被访问的数据集缓存,立即移除。

    4)最大生存时间:超过最大生存时间,数据集缓存立即移除。

    注:设置「最大空闲时间」和「最大生存时间」后,需要重启报表工程方可生效。

    4.3 抽数缓存

    详情链接:抽数缓存使用方法

    附件列表


    主题: 性能优化
    已经是第一篇
    已经是最后一篇
    • 有帮助
    • 没帮助
    • 只是浏览

    售前咨询电话

    400-811-8890转1

    在线技术支持

    请前往「服务平台」,选择「在线支持」

    热线电话:400-811-8890转2

    总裁办24H投诉

    热线电话:173-1278-1526