1. 概述
1.1 版本
报表服务器版本 |
---|
11.0 |
1.2 应用场景
对于报表执行速度而言,数据源取数性能是存在较大影响的一环。
如果对于数据的实时性要求不高能接受半小时左右的更新频率,使用缓存是一种既能降低服务器和数据库压力,又能提升报表执行速度的方案。
1.3 功能简介
「抽数缓存」通过将数据集查询的结果缓存,再次进行相同查询时,无需连接数据库重新查询数据,直接使用缓存,达到资源复用,减少取数时间从而提高了报表的展现速度。同时通过定时抽取更新缓存数据,提升数据的准确性。
2. 对比共享数据集的优势
抽数缓存 | 共享数据集 |
---|---|
支持精准推荐缓存适用模板,批量一键开启缓存 | 需要每个数据集单独开启,自行识别适合的模板 |
支持资源占用自定义配置,限制最大资源占用,断绝对其他系统业务的影响 | 仅支持设置缓存个数,占用内存磁盘等不可控,可能影响业务使用 |
支持实时监控缓存资源占用及访问情况 | 不支持 |
支持用户工具栏显示数据更新时间并可手动获取最新数据 支持管理员手动停止缓存更新或立即更新最新数据 | 不支持,需要等到超时自动失效 |
支持定时更新,确保缓存始终延续并定期获取新数据 | 不支持,超时失效后访问重新生成 |
支持与报表自身的填报功能联动,填报后自动失效填报相关的缓存 | 不支持,发生填报后缓存相关数据依旧不变,可能出现数据不一致的问题 |
不常用或占用资源较多的缓存,将自动限制缓存或直接停止自动更新,检测到缓存活跃将再次进入自动更新缓存状态 | 仅支持最近使用、最不常使用、先进先出三种简单策略 |
3. 操作步骤
以管理员身份进入平台,点击「管理系统>抽数缓存」,界面如下图所示:
3.1 缓存模板管理
1)缓存模板推荐
先使用「缓存模板管理」功能检测适合开启缓存的模板。
点击「开始分析」后,将根据系统的历史运行数据进行分析,并推荐可能适合使用缓存的模板。如下图所示:
2)缓存模板管理
用户可在此处添加、删除开启缓存的模板。
3.2 缓存配置
缓存配置页面中,可以对服务器的缓存进行设置,如下图所示:
各设置项介绍如下表所示:
设置项 | 说明 |
---|---|
开启缓存 | 针对设置缓存的模板,开启后将数据集查询的结果缓存 |
显示缓存提示 | 用于设置是否在模板预览的工具栏处显示缓存提示(无工具栏则不显示),包括手动更新数据按钮和缓存生成时间,点击更新数据后可在预览时手动更新用到的缓存,用于用户在觉得数据不准确时立即进行更新,如下图所示: |
缓存模板提醒 | 开启后将通过以下方式通知用户适合开启缓存的模板: 1)平台消息 2)用户当天首次进入平台的「抽数缓存」页面时,页面上方 tooltips 提示:系统中15张模板使用缓存将提升较多性能,请前往缓存模板管理查看并开启 同时,「模板缓存管理」页面下提示:精准推荐X张,点击查看 |
参数预测 | 开启后,将提前预测模板的参数使用情况并缓存,进而优化加载性能 |
缓存内存空间限制 | 用于限制缓存占用服务器内存空间的最大值 |
缓存更新规则 | 简单重复执行: 按照设定频率进行更新,支持开启「缓存规则自动优化」,开启后将在合理范围内动态调整缓存更新间隔,避免出现大量缓存同时更新。 按表达式设置: 可输入 CRON 表达式(例如0 0 12 * * ?表示每天中午 12:00 ) |
总是重新读取模板 | 指的是 cpt 或 frm 文件内容是否缓存到内存 针对所有模板,未开启时,会缓存模板文件;开启后,每次都重新读取模板 |
注:由于缓存主要用于提升取数性能,缓存较大数据量会造成服务器资源紧张,因此目前限制最大缓存数据量为 50W(行*列)。
3.3 运行监控
如对缓存的使用状况有了解诉求,或想手动处理部分异常缓存时,可进入「管理系统>抽数缓存」目录的「运行监控」
详细说明请参见:缓存运行监控
3.4 数据集单独缓存设置
系统中可能会存在一些模板的数据更新时间与其他大部分模板存在差异,不适合使用统一的设置进行抽数缓存,此时可以对相应数据集进行单独缓存设置。
在数据集编辑面板中,将替代原本共享数据集显示新的缓存设置。
1)采用服务器设置时,将使用服务器默认的缓存策略,可以看到对应的缓存策略及缓存是否默认开启,但不允许修改。如下图所示:
2)为该数据集单独设置时,允许单独设置此数据集是否使用缓存以及策略配置。如下图所示:
点击「策略配置」后,可自定义缓存策略配置。如下图所示:
3)对于存在较多数据集的模板,一个个修改缓存设置较花时间,可以通过数据集工具栏的按钮实现快速开启/关闭。如下图所示:
点击按钮将批量修改当前模板的数据集为单独设置,并开启缓存。
点击按钮将批量修改当前模板的数据集为单独设置,并关闭缓存。
4. 示例场景
大屏/驾驶舱场景往往需要对多个指标同时进行分析,可能一个模板内存在大量的 SQL ,就算每个 SQL 的耗时不高,但十几个甚至更多指标的 SQL 耗时进行累加,就会导致整个页面需要较长的时间才能加载结束。
如果这些 SQL 较为复杂,整体大屏/驾驶舱的预览将耗时更久。而这类页面往往还是领导、管理层常常使用的,对性能要求会更加严格。
并行取数是一个优化办法,但由于取数先后关系、线程限制等因素的影响,只能优化一部分取数性能。可以直接将大屏/驾驶舱的对应模板开启抽数缓存,将模板内所有取数都缓存起来,保证大屏/驾驶舱的加载速度。如下图所示: