模板预览慢又不是我的错,天天被逮着喷,可救救我吧!
这个问题可太大了,因为影响一张报表模板预览时间的因素真的是太多了,众所周知,导致一张模板性能变差的原因太多了,数据稍微多一点,计算稍微复杂一点,数据库稍微卡一点就慢了,得先定位到问题得根因才好解决问题。那就得从头说起,预览模板一般要经历三个环节,”取数“、”计算“、”展现“,顾名思义,就是从数据库获取数据,导入到报表服务器进行计算,最终渲染展现到前台。之前分析过一波性能问题模板,问题原因虽然多,但是还是有代表性的,用一张词云图展示一下分析结果,70%性能模板都存在取数慢的问题,而取数慢最主要的就是复杂 SQL 慢和单个 SQL 快但是大屏并发执行很多 SQL 导致慢这两大诱因。
你这么一说我好像有点思路了,但是!!!优化复杂SQL,说的轻巧,优化一张模板的复杂SQL就要命了,我还有大量模板
业务分析场景越复杂往往写的SQL也就越复杂,而且优化SQL往往是”吃力不讨好“,优化很久效果也就差在毫秒,其实抽取中间表也不失为一个好方案,但是想到中间表的抽取逻辑,中间表取数到最终展示的SQL调整的那个工作量,又是一个令人窒息的选择,倒是有一个比较适合解决SQL取数慢的方案,提前给你透漏点吧,抽数缓存插件也许、大概、可能能解决你的问题,给你放个效果图先看看你满意不。
这可太可以了,快介绍详细点
插件叫”抽数缓存“那必然是一定要缓存的,插件先将数据集查询的结果缓存下来,再次进行相同的查询的时候无需再次连接数据库,直接读取缓存结果,整整的节省了SQL取数时间,从而大幅的提升报表的展现速度,按照SQL缓存自然就跟访问者没有关联了,只要前后两次执行的SQL一模一样,就能复用之前的缓存结果,对于使用填报的用户,可以根据填报的情况快速失效,从而确保数据的准确性。
那缓存失效了岂不是没用了
跟以往缓存不同的地方就是我们是抽数缓存,系统可以根据自定义设置的时间间隔去执行SQL,持续抽数,这样就一直有从数据库抽取的最新的SQL执行结果,不用担心缓存失效掉就没有缓存效果了。
我知道你又要问资源占用问题了,当然,也不用担心资源浪费问题,超过24小时没人访问过的SQL就会停止抽数释放资源,从根本上我们支持资源配置自定义,可以根据业务系统的实际情况自定义设置缓存占用资源配比,选择缓存可以占用内存多少资源,超过这些资源以后是否可以缓存到磁盘,可以占用磁盘多少资源,简直”随心所欲“,更难得的是,对于不常用或占用资源较多的缓存,会动态存储至磁盘或直接停止自动更新,检测到缓存活跃将再次进入自动更新缓存状态。
那我寻思其实咱们这个缓存也不是所有模板都适合的,我作为一个纯的不能再纯的纯运维我也不知道开哪些模板合适啊
这我都替你想好了,我们有缓存推荐功能,快速分析服务器近一个月的访问行为记录,推荐出SQL耗时多,SQL重复率高的模板,一键分析即可推荐给您系统最适合开启缓存的模板,就是数据实时性的关得您自己把控了,真要是那种要求时时刻刻,每时每秒都更新得数据是万万不能缓存了。
那我要是想具体了解系统现在得缓存状况怎么办
一张截图让你快速了解缓存管理页面
在这个页面你可以了解到目前系统中有多少张开启了缓存并且进入抽数的模板,可以查看每一条缓存具体执行的SQL,可以知道上一次缓存时间和下一次预计缓存时间,如果你确切的知道数据库的数据非正常频率发生了以外变更,可以在缓存管理页面通过失效缓存,以达到数据立刻更新的目的。
最最关键的问题,我要在哪里获取这个插件
哈哈!竟然忘记了此等大事,可以联系我们官方技术支持获取插件呦~
编辑于 2021-7-13 09:52
|