1 概述

通过优化数据模型的缓存机制,可以加速报表的访问,降低数据库的压力。


1、数据模型里面表/查询的数据预览、整个模型数据预览不走数据模型设置的缓存失效时间。
2、web电子表格电子表格的缓存不走数据模型设置的缓存有效期。
3、数据模型设置的缓存有效期只针对:仪表盘、透视分析、即席查询、模型查询。
4、数据模型的参数缓存:默认走数据模型设置的缓存有效期。

2 功能介绍

在数据模型中可以设置缓存策略。如果是禁用缓存,每次取数都会重新取数。 如果是 启用缓存缓存有效期内,如果查询字段或值(比如筛选器的条件)未改动,再次访问时将直接从缓存中获取数据。

缓存策略:系统配置项、 禁用缓存、启动缓存3个选项, 默认选项:系统配置项。

选项内容
启用缓存

启用缓存 在缓存有效期内,如果查询字段或值未改动,再次访问时将直接从缓存中获取数据。

数据模型不管是 抽取 还是 直连 模式都支持 启用缓存 

1、抽取模式下:

  • 抽取模式默认就是”启用“缓存,不能禁用缓存,考虑到抽取默认就是把数据抽取到MPP库中,数据是相对固定的,禁用缓存没有意义。
  • 更新模型或重抽会自动清理缓存或者,否则缓存会一直存在。

2、直连模型下:

  • 可以设置缓存有效期,缓存有效期内,如果查询字段或值未改动,再次访问时将直接从缓存中获取数据。 
  • 缓存有效期:默认读取系统选项/性能优化/数据模型缓存有效期“的值;用户可以手工输入,支持小时、分、秒单位。
  • 点击工具栏的”清空缓存“之后,会重新读取最新数据。
禁用缓存

1、禁用缓存:不管是 抽取 还是 直连 模式每次请求都会发送新的请求,重新读取数据。

  • 如果 清理缓存 同时会清理 cube定义和维度成员 的缓存。
  • 不同用户,如果角色一样,设置行权限一样,会使用同一个缓存。

2、抽取模式下:

  • 设置 禁用缓存 没有意义;基于数据模型抽取模式做的报表,在查询时候都认为是启用缓存,同时产品本身在”更新抽取“或者”计划任务调度“时是会清空缓存。
  • 更新模型、重抽数据 自动清理缓存。

3、如果在报表层,比如仪表盘:

  • 同一个组件的内容,引用到其他报表,会使用一个缓存;
  • 同数据不同组件,会使用同一个缓存
  • 清单表滚动加载,分页数据不会重新发送加载数据请求
  • 相同的筛选组合,重复查看只会生成一次缓存;不同的筛选器组合会重新生成缓存,并且重新请求数据。
系统配置

默认读取运维设置/系统选项/性能优化/数据模型中的设置项值,跟着系统选项改变。



3 清除指定模型的缓存

  通过接口定时清除具体某个/几个模型的缓存:

① 接口方法全限定名:
smartbix.smartbi.AugmentedDataSetForVModule.clearCacheByDatasetId(String)
② 接口调用:
1、前端调用
var util = jsloader.resolve('freequery.common.util');util.remoteInvoke(‘AugmentedDataSetForVModule’,’clearCacheByDatasetId’,['I82808081017f72bb72bb395f017f72bb395f0000'])
1、 后端调用
AugmentedDataSetForVModule.getInstance().clearCacheByDatasetId方法
③ 接口参数及其说明:
● id: String 数据模型id。
● 无返回值
④  调用示例:
AugmentedDataSetForVModule.getInstanceSAugmentedDataSetForVModule.getInstance().clearCacheByDatasetId("I82808081017f72bb72bb395f017f72bb395f0000");


计划任务调用示例

//下面一行填数据模型的ID
var datasetId = "Iff80808101815cc05cc0a2d50181677795bc00bd";
Packages.smartbix.smartbi.AugmentedDataSetForVModule.getInstance().clearCacheByDatasetId(datasetId);