对于报表执行速度而言,数据源取数性能是存在较大影响的一环。如果对于数据的实时性要求不高能接受半小时左右的更新频率的话,使用缓存是一种既能降低服务器和数据库压力,又能提升报表执行速度的方案。
1. 插件基本介绍编辑
报表服务器版本 | JAR 包版本 | 插件版本 |
---|---|---|
10.0 | 2020-05-04 | V1.1.6 |
1.1 功能介绍
1)抽数缓存插件可先将其数据集查询的结果缓存下来,对于缓存下来的数据,再次进行相同查询时,无需再次连接数据库重新查询数据,直接使用缓存下来的结果,达到资源复用,减少取数时间从而提高了报表的展现速度。
2)能够基于模版的访问情况,推荐适合使用缓存的模版,并对经常访问的模版进行定时更新,避免用户出现“首次访问慢”的场景。
3)对于使用填报的客户,更能根据填报的情况,快速失效缓存,确保数据的一致性。
4)提供缓存管理界面,可以直观看到缓存使用情况并进行管理。
1.2 插件安装
点击下载插件:抽数缓存
设计器插件安装方法参照: 设计器插件管理
服务器安装插件方法参照: 服务器插件管理
2. 插件使用方法编辑
2.1 缓存推荐
通过对系统的智能检测,推荐系统中现有适合开启抽数缓存的模板
例如:
决策系统地址:http://localhost:8075/webroot/decision
缓存推荐访问地址:http://localhost:8075/webroot/decision/esd/recommend/cpt
2.2 服务器缓存设置
在平台的“系统管理”——“缓存”页面中,可以对服务器的缓存进行设置
缓存设置:
1)开启缓存为总开关,关闭后服务器将停止使用缓存
2)允许缓存到磁盘用于设置是使用磁盘+内存进行缓存,或仅使用内存进行缓存
3)缓存内存空间限制用于限制缓存占用服务器内存空间的最大值
4)缓存磁盘空间限制用于限制缓存占用服务器磁盘空间的最大值
策略配置中为高级设置:
默认开启缓存勾选后,所有未进行单独设置的模版将都开启缓存
缓存策略提供两种选择:分别为按频率间隔更新或定时更新。
其中按频率间隔更新支持开启缓存规则自动优化(建议开启),开启后将自动在运行过程中判断缓存更新间隔是否合理,并对相应规则进行调整优化。
注意:更新间隔是弹性的,如果sql结果每次变化,那么就会间隔缩短,表示这是一个需要加快更新的数据表,最短是sql执行的两倍间隔;如果sql每次结果都不变,间隔就会变成,最长6小时更新一次
关于支持数据量:能支持的模板的数据量是按照内存分配动态调整的,默认 500MB ,就是1kw上限(行 * 列),如有更大数据量的需求,可以计算模板占用内存自由调整分配内存
2.3 数据集缓存设置
插件安装后,将替代原本共享数据集,在数据库查询和服务器数据集处显示新的缓存设置
采用服务器设置时,将使用服务器默认的缓存策略,可以看到对应的缓存策略及缓存是否默认开启,但不允许修改
为该数据集单独设置时,允许单独设置此数据集是否使用缓存以及策略配置。
2.4 缓存快速开启/关闭
对于存在较多数据集的模版,一个个修改缓存设置较花时间
可以通过数据集工具栏的按钮实现快速开启/关闭
点击按钮将批量修改当前模版的数据集为单独设置,并开启缓存
点击按钮将批量修改当前模版的数据集为单独设置,并关闭缓存
2.5 缓存管理页面
安装插件后,平台目录新增“增强型数据源缓存”标签,点击可进入缓存管理页面
在此页面中可以一览目前使用缓存,并对其进行增删改等管理操作。
其中包括缓存目前系统资源占用情况,缓存个数(括号内为总生效缓存数,括号外为自动更新缓存数),缓存的来源模版、数据连接、具体缓存sql、数据量、缓存方式、缓存命中情况和具体的缓存更新情况等
“自动更新”:为避免出现无价值的缓存,浪费服务器和数据库资源,缓存存在5次的门槛,当数据查询达到5次,才会进入自动更新,避免用户出现“首次访问慢”的场景,每日定时更新的无门槛
可以通过按钮对单一或全部的缓存进行清除,对单一或全部的缓存进行中止(不再使用缓存)
或对单一缓存进行立即更新
“暂停抽数”、“恢复抽数”:表示暂停/恢复所有缓存自动更新
“暂停缓存”、“恢复缓存”:表示停止使用缓存,功能等同于缓存的总开关
“缓存计划明细”:点击下次更新时间可查看当前缓存的计划明细,包括:
1)策略开启:目前默认是,表示会存取都走缓存,定时更新也会根据配置和访问情况执行;
2)是否自动调整:目前默认是,表示更新间隔、是否自动更新都会根据访问情况自动调整;
3)是否开启监控缓存访问:默认是,表示缓存的访问记录(访问命中更新失效的时间)都会被统计;
4)策略开始时间:缓存及策略第一次访问被创建的时间;
5)上次更新时间:缓存的上次更新时间;
6)存活时间:缓存在超过存活时间后会被失效;
7)终止前空闲时长:缓存超过这个时长没有被访问,就会被终止(终止表示清除此缓存、访问数据以及策略);
8)更新间隔:缓存自动更新的间隔;
9)终止时间:缓存及其策略被终止的时间,如果sql包含某些关键字认为不适合缓存,将会被设置终止时间;
10)连续更新不同次数:每次自动更新的缓存数据都变化的次数;
11)连续更新相同次数:每次自动更新的缓存数据都不变化的次数;
12)连续更新失败次数:连续自动更新失败的累计次数,达到10次将会被终止;
2.6 磁盘缓存目录修改
若启用了磁盘缓存,默认的会在C:\Users\用户名\.FineReport100(windows下)下创建 cache 即缓存文件夹,一般呢,C 盘的空间会很小,如保存在 C 盘会增加对 C 盘的压力,那么有没有方法让其保存到别的盘下呢?
磁盘缓存的目录可通过 FineDB 的 FINE_CONF_ENTITY 表中的配置信息进行修改,这里缓存地址修改的是 ESDCacheManagerConfig.diskStorePath 字段的值(如不存在自行添加),例如,将 ESDCacheManagerConfig.diskStorePath 的值改为D:\Cache,这里使用填报的方式,具体实现方法参考 报表内置 HSQL 数据库 FineDB
修改后保存并提交,重启(禁用再启用)插件,缓存文件将会保存在 D 盘 Cache 目录下,若没有 Cache 文件夹,会自动创建该文件夹;
注:缓存路径一定要设置为某个独立的文件夹下,切忌与其他文件共用一个目录,如报表的缓存目录跟Web服务器工程的相同,则会删除 Web 服务器工程下的内容。
3. 插件卸载说明编辑
由于目前是和老的共享数据集共用配置,如不希望再使用插件,建议还原关闭掉模版开启的缓存后再进行卸载,或直接关闭“系统管理”——“缓存”页面中的“开启缓存”按钮,否则可能出现卸载后模版依旧在使用共享数据集的问题。
注意:无需卸载插件,效果等同于禁用或卸载插件