一、背景
公司有需求要部署一套帆软的BI 和报表的产品, 进行数据统计和展示,但是发现在报表使用过程中展示数据过程缓慢,某些报表需要等待1min-2min 左右才能加载完成。通过运维平台的链路跟踪,发现是数据库执行相关Sql 较慢导致,后面通过查找官方文档,找到一个报表数据缓存的功能,随进行配置,配置后数据加载可以在5s内完成,效果较好。
使用场景
如果对于数据的实时性要求不高能接受半小时左右的更新频率,使用缓存是一种既能降低服务器和数据库压力,又能提升报表执行速度的方案
二、操作步骤
1、配置Redis 服务器
Redis 服务器作为缓存服务器使用,相关数据缓存到Redis的内存中,并根据配置的刷新策略定期进行刷新
Redis 官方推荐配置:8C 32G 内存
2、配置加速配置
按照下图开启缓存配置,并配置缓存内存限制和更新策略
3、配置模版启动加速
根据下图开启对应模版的加速
4、查看加速情况
5、缓存限制
-
命中策略
通过将数据集查询的结果缓存,再次进行相同查询时,无需连接数据库即可重新查询数据
-
缓存个数限制
总体缓存个数不能无限制的增长,单个模板的缓存也是这样。
调度器提供了两种踢出规则,依次进行检查:
1)单个模板缓存不能超过1000个(可通过配置修改),超出后踢出
2)总缓存数量不能超过10000个(可通过配置修改),超出后踢出
-
更新缓存
调度器默认提供了两种更新策略设置:
1)按固定间隔更新:如果设置30分钟,那么缓存将在从存储开始后的第30分钟自动更新
2)按CRON表达式更新:CRON表达式比较灵活的设置需要更新的时间点,当到达预设时间点也会自动更新。
更新缓存时,会根据当前缓存对应记录的sql,重新请求数据库得到结果集,并替换当前的缓存数据,此过程不会阻塞正常取数业务。