最新历史版本 :缓存模板管理 返回文档
编辑时间: 内容长度:图片数:目录数: 修改原因:

目录:

1. 概述编辑

抽数缓存插件 安装后,若想为模板开启「全局缓存」和「联动缓存」,可在「模板缓存管理处」进行设置。如下图所示:

4.png

2. 功能介绍编辑

全局缓存,缓存的是查询结果,但有时用户数据集里的参数是会变化的,结果有很多,这时候全局缓存的作用就不明显了,此时建议使用联动缓存。

2.1 全局缓存

可将常用的数据集或者 sql 函数抽取到内存进行缓存,之后预览相关模板时,就能明显提高查询的速度。

如果对于数据的实时性要求不高,能接受半小时左右的更新频率,那么使用缓存是一种既能降低服务器和数据库压力,又能提升报表执行速度的方案。

2.2 联动缓存

2.2.1 功能描述

可将模板中用于联动的数据集和 sql 函数去参缓存,有利于加速模板中参数联动的性能。

「联动缓存」基于「全局缓存」进行了场景的扩充,支持了填报场景下例如控件数据字典联动,控件值联动等场景,加快了控件操作时的取数速度,优化了交互体验。

2.2.2 缓存对象

数据集:控件数据字典(参数面板控件、单元格控件、表单控件)使用的带有参数的 sql 语句。

sql 函数:单元格值、条件属性、形态、校验、提交中使用的带有参数的 sql 函数。

2.2.3 注意事项

1)「联动缓存」是「全局缓存」的一部分,其通用设置功能一致。

2)仅支持 MySQL、SQLServer、Oracle 数据库。

3)不支持部分 sql 语句结构。具体可见下表:

不支持场景示例
参数不在 where 最外层,比如在子查询中SELECT * FROM S产品 where 产品ID in (SELECT 产品ID FROM S产品明细 where 产品名称="${mc}")
参数在数据库公式内SELECT * FROM S产品 where 产品ID = fanruan("${id}")
参数在 group by 或者 order by 语句中SELECT * FROM S产品 order by "${id}"
存在 if 函数,且结果分支大于 1(空分支不算)SELECT * FROM S产品 where 1=1  ${if(len(id) == 0,"and 产品ID=1","and 产品ID = '" + id + "'")} 
where 条件中包含字段与操作符相同的条件SELECT * FROM S产品 where 产品ID >1 and 产品ID >2
存在 sum 等计算函数SELECT sum(单价) FROM S产品 where 产品ID < 5

2.3 全局缓存、联动缓存区别

1)缓存初始化时机不一样:「全局缓存」是在设置开启全局缓存,模板加载的时候进行初始化;「联动缓存」是在开启模板联动缓存时,后台就按照顺序开始抽取。

2)缓存范围不一样:全局缓存是将一个模板的所有 sql 全部缓存;联动缓存只将一个模板中用于联动的 sql 进行缓存。

3)缓存 sql 不一样:全局缓存是将完整的 sql 进行缓存;联动缓存是将简单 sql 去参后进行缓存。

4)读取缓存后的计算逻辑不一样:全局缓存是直接读取缓存结果用于模板计算;联动缓存读取缓存后还需要拼接上 sql 中的参数进行过滤后,再用于模板计算。

3. 操作步骤编辑

3.1 缓存模板推荐

首次安装「抽数缓存」插件并使用时,建议使用「缓存模板管理」功能进行检测适合开启缓存的模板。

点击「开始分析」后,插件将根据系统的历史运行数据进行分析,并推荐可能适合使用缓存的模板。如下图所示:

6.png

3.2 缓存模板管理

1)用户可在此处添加、取消开启缓存的模板。如下图所示:

注:支持同时开启「全局缓存」和「联动缓存」。

7.png

2)用户如果对缓存的使用状况有了解诉求,或想手动处理部分异常缓存时,可参见:缓存运行监控