常见的数据报表查询卡顿问题的原因分析,以及解决措施

数据报表查询、导出时,经常发生耗时长,甚至超时、前端页面崩溃的问题。

1、前端页面为何崩溃?

前端需要加载的资源太多太大,超出了浏览器的承载能力,前端渲染失败。严重的情况,会直接把浏览器卡退。这种情况,可以通过限制查询条件,比如只查询最近一个月的报表;如果用户需要查看全部的,可以直接导出来看。

2、报表查询耗时久

这里的情况就比较复杂,分两种。

情况一

一种是数据库数据量太大,导致的查询慢。这种情况,可以通过增加数据库索引来解决,但如果在系统的前端页面给的筛选条件太多,用户使用的组合过多的话,数据库不可能给每一种查询组合都增加索引,即使都增加了,那么去查询这些数据库索引也同样会增加耗时,仍然达不到快速查询的效果。
因此,一般情况下,都是对用户常用的查询条件去添加数据库索引。

情况二

第二种情况,是数据量本身不大,但仍然查询或者导出时间达到了十几二十秒,夸张的可以达到好几分钟。这种情况一般就是链表查询太多引起的。
有的报表,下面可以链接十张表之多,一张表几十万数据,再链接一张,就要查询几十万x几十万,可想而知,如果有十张表,这个数据量是多么恐怖。
这种情况,一般在数据库表设计阶段就应该避开这种模式,但是如果已经设计成了这种方式,能够做的处理就很有限了。

要么,重新梳理数据库结构,看看还能不能拆表;要么就废弃表重做。

另外就是,如果新需求里,需要增加报表的查询字段,为了减少链表数量,提升查询性能,可以通过在主表里加冗余字段的方式来实现。

如果当前系统的这种深链接报表很多,且用户使用频繁,也实在没办法优化。那么,可以考虑将报表单独迁移到一个服务器上,这样,如果报表卡顿,只会影响报表的使用,不会影响到其他非报表页面的使用。

  • 8
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值