历史版本30 :抽数缓存介绍 返回文档
编辑时间: 内容长度:图片数:目录数: 修改原因:

目录:

1. 概述编辑

1.1 版本

报表服务器版本
11.0

1.2 应用场景

对于报表执行速度而言,数据源取数性能是存在较大影响的一环。

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

1.3 功能简介

「抽数缓存」通过将数据集查询的结果缓存,再次进行相同查询时,无需连接数据库重新查询数据,直接使用缓存,达到资源复用,减少取数时间从而提高了报表的展现速度。

同时通过定时抽取更新缓存数据,提升数据的准确性。

2. 产品特点编辑

2.1 对比共享数据集的优势

抽数缓存
共享数据集
支持精准推荐缓存适用模板,批量一键开启缓存需要每个数据集单独开启,自行识别适合的模板
支持资源占用自定义配置,限制最大资源占用,断绝对其他系统业务的影响仅支持设置缓存个数,占用内存磁盘等不可控,可能影响业务使用
支持实时监控缓存资源占用及访问情况不支持

支持用户工具栏显示数据更新时间并可手动获取最新数据

支持管理员手动停止缓存更新或立即更新最新数据

不支持,需要等到超时自动失效

支持定时更新,确保缓存始终延续并定期获取新数据不支持,超时失效后访问重新生成
支持与报表自身的填报功能联动,填报后自动失效填报相关的缓存不支持,发生填报后缓存相关数据依旧不变,可能出现数据不一致的问题
不常用或占用资源较多的缓存,将自动限制缓存或直接停止自动更新,检测到缓存活跃将再次进入自动更新缓存状态仅支持最近使用最不常使用先进先出三种简单策略

2.2 产品框架

插件采用模块化设计,具有良好的层级结构和解耦。产品内置了灵活的熔断限流调度机制,不会对数据库造成任何压力。

本节主要为大家介绍其中的主要模块和特点:

模块
特点
存储容器

默认最大内存占用为JVM heap的1/4,超出后自动踢出

单个缓存数据量不能超过500000(行*列,可通过配置修改)

调度器-缓存存储以后,调度器会根据每个缓存创建的策略,执行更新/失效/终止的调度。
最大空闲时间

当缓存创建后72h内无任何访问,将会被终止踢出。

如果采用按间隔更新,需要至少命中一次后,缓存才会被自动更新。

更新缓存

调度器默认提供了两种更新策略设置:

1)按固定间隔更新:如果设置30分钟,那么缓存将在从存储开始后的第30分钟自动更新

2)按CRON表达式更新:CRON表达式比较灵活的设置需要更新的时间点,当到达预设时间点也会自动更新。

更新缓存时,会根据当前缓存对应记录的sql,重新请求数据库得到结果集,并替换当前的缓存数据,此过程不会阻塞正常取数业务。

缓存个数限制总体缓存个数不能无限制的增长,单个模板的缓存也是这样。

调度器提供了两种踢出规则,依次进行检查:

1)单个模板缓存不能超过1000个(可通过配置修改),超出后踢出

2)总缓存数量不能超过10000个(可通过配置修改),超出后踢出

更新高负载

调度器目前设计了一个调度线程池用来调度缓存的行为(更新、失效、终止三种行为):

1)更新线程池线程个数是15(可通过配置修改),最大有15个线程同时以JDBC方式访问数据库。

2)监控更新操作任务的创建和完成吞吐量,和二者的比率,防止当由于数据库或者服务器的响应变慢时抽数缓存雪上加霜。

3)清除终止所有缓存后,正常的报表计算取数逻辑不受影响,按正常取数执行。

3. 操作步骤编辑

以管理员身份进入平台,点击「管理系统>抽数缓存」,界面如下图所示:

7.png

3.1 缓存模板管理

1)缓存模板推荐

先使用「缓存模板管理」功能检测适合开启缓存的模板。

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

4.png

2)缓存模板管理

用户可在此处添加、删除开启缓存的模板。

3.2 缓存配置

缓存配置页面中,可以对服务器的缓存进行设置,如下图所示:

8.png

各设置项介绍如下表所示:

设置项说明
开启缓存

针对设置缓存的模板,开启后将数据集查询的结果缓存

显示缓存提示

用于设置是否在模板预览的工具栏处显示缓存提示(无工具栏则不显示),包括手动更新数据按钮和缓存生成时间,点击更新数据后可在预览时手动更新用到的缓存,用于用户在觉得数据不准确时立即进行更新,如下图所示:

image.png

缓存模板提醒

开启后将通过以下方式通知用户适合开启缓存的模板:

1)平台消息

1625715260784154.png

2)用户当天首次进入平台的「抽数缓存」页面时,页面上方 tooltips 提示:系统中15张模板使用缓存将提升较多性能,请前往缓存模板管理查看并开启

1625723384643073.png

同时,「模板缓存管理」页面下提示:精准推荐X张,点击查看

1625723638229868.png

参数预测

开启后,将提前预测模板的参数使用情况并缓存,进而优化加载性能

缓存内存空间限制用于限制缓存占用服务器内存空间的最大值
缓存更新规则

简单重复执行:

1625714492452117.png

按照设定频率进行更新,支持开启「缓存规则自动优化」,开启后将在合理范围内动态调整缓存更新间隔,避免出现大量缓存同时更新。

按表达式设置: 

1625714525969363.png

可输入 CRON 表达式(例如0 0 12 * * ?表示每天中午 12:00 )

总是重新读取模板

指的是 cpt 或 frm 文件内容是否缓存到内存

针对所有模板,未开启时,会缓存模板文件;开启后,每次都重新读取模板

注:由于缓存主要用于提升取数性能,缓存较大数据量会造成服务器资源紧张,因此目前限制最大缓存数据量为 50W(行*列)。

3.3 运行监控

如对缓存的使用状况有了解诉求,或想手动处理部分异常缓存时,可进入「管理系统>抽数缓存」目录的「运行监控」

详细说明请参见:缓存运行监控

3.4 数据集单独缓存设置

系统中可能会存在一些模板的数据更新时间与其他大部分模板存在差异,不适合使用统一的设置进行抽数缓存,此时可以对相应数据集进行单独缓存设置。

在数据集编辑面板中,将替代原本共享数据集显示新的缓存设置。

1)采用服务器设置时,将使用服务器默认的缓存策略,可以看到对应的缓存策略及缓存是否默认开启,但不允许修改。如下图所示:

10.png

2)为该数据集单独设置时,允许单独设置此数据集是否使用缓存以及策略配置。如下图所示:

12.png

点击「策略配置」后,可自定义缓存策略配置。如下图所示:

1625725346771395.png

3)对于存在较多数据集的模板,一个个修改缓存设置较花时间,可以通过数据集工具栏的按钮实现快速开启/关闭。如下图所示:

1603951292523305.png

点击1.png按钮将批量修改当前模板的数据集为单独设置,并开启缓存。

点击2.png按钮将批量修改当前模板的数据集为单独设置,并关闭缓存。

4. 示例场景编辑

大屏/驾驶舱场景往往需要对多个指标同时进行分析,可能一个模板内存在大量的 SQL ,就算每个 SQL 的耗时不高,但十几个甚至更多指标的 SQL 耗时进行累加,就会导致整个页面需要较长的时间才能加载结束。

如果这些 SQL 较为复杂,整体大屏/驾驶舱的预览将耗时更久。而这类页面往往还是领导、管理层常常使用的,对性能要求会更加严格。

并行取数是一个优化办法,但由于取数先后关系、线程限制等因素的影响,只能优化一部分取数性能。可以直接将大屏/驾驶舱的对应模板开启抽数缓存,将模板内所有取数都缓存起来,保证大屏/驾驶舱的加载速度。如下图所示:

160016id1d6dlrm9de4nk3.gif