统计慢的报表一般怎么处理。
9 April 2025 at 17:20
heganghua: 目前项目有个需求是,优化项目想所有大于 3 秒的接口。
但是在我们的系统里面充斥着几十张各种维度的统计报表。有得需要连表查询六七八张表,有的方法快五千多行快六千行(屎山,暂时不考虑去优化代码了)。
目前想到了有几种方案:
1 、加缓存,每次查询都从缓存里面找,未命中才查库。但是这个问题就是,虽然返回数据不算很多,但是架不住条件多,每个组合起来,key 就多了,服务器内存也不能再加了,所以没有考虑。
2 、考虑使用中间表统一处理, 每个报表建立一张中间表,统一采用定时任务,调用接口,获取最小维度的数据,放入中间表中,前端调用接口时,直接获取中间表的数据然后使用条件过滤,这样再需要去计算以及统计了。但是这种有点复杂,因为领导系统设计成统一的,也就是前端调用同一个接口,后端判断需要获取的是哪个报表,然后根据策略去获取对应中间表的数据。
还有哪些方案可以处理。
但是在我们的系统里面充斥着几十张各种维度的统计报表。有得需要连表查询六七八张表,有的方法快五千多行快六千行(屎山,暂时不考虑去优化代码了)。
目前想到了有几种方案:
1 、加缓存,每次查询都从缓存里面找,未命中才查库。但是这个问题就是,虽然返回数据不算很多,但是架不住条件多,每个组合起来,key 就多了,服务器内存也不能再加了,所以没有考虑。
2 、考虑使用中间表统一处理, 每个报表建立一张中间表,统一采用定时任务,调用接口,获取最小维度的数据,放入中间表中,前端调用接口时,直接获取中间表的数据然后使用条件过滤,这样再需要去计算以及统计了。但是这种有点复杂,因为领导系统设计成统一的,也就是前端调用同一个接口,后端判断需要获取的是哪个报表,然后根据策略去获取对应中间表的数据。
还有哪些方案可以处理。