永洪社区

标题: 查看报告翻页时间很久 [打印本页]

作者: yhdata_0DaS7cER    时间: 2023-6-27 20:45
标题: 查看报告翻页时间很久
永洪版本号9.4.3。现在修改了判断慢查询的时间为30秒,翻页可以显示,但是也很慢,时间在40秒左右,这中间有一部分时间是在init上。请问有什么方法可以加快查询时间?
作者: yanieye    时间: 2023-6-27 21:04
这个图看着太模糊了,看不清楚呢。
作者: yhdata_0DaS7cER    时间: 2023-6-27 21:26
yanieye 发表于 2023-6-27 21:04
这个图看着太模糊了,看不清楚呢。

我重新发一下
作者: yhdata_0DaS7cER    时间: 2023-6-27 21:44
yanieye 发表于 2023-6-27 21:04
这个图看着太模糊了,看不清楚呢。

翻页卡死问题现状分析
一:问题现状:
在机构和日期明确情况下数据量较大时,在第一次查询展示成功后,后续的翻页和跳转会出现等待卡死现象。
二:问题跟踪:
经过日志的分析和判断,初步定位由以下3点原因共同作用导致卡死现象产生。
1:翻页时会触发查询init动作(具体init触发原因未知),查询init超过5秒时的查询会被放到慢查询池中,优先级降低,优先处理快查询池中的查询请求,慢查询池中的请求会滞后发送。
2:大数据量的init动作会超过20秒,经测算,20万数据约6秒,700万数据从32秒到57秒不等,与查询数据源接口时间正相关。
3:数据源查询接口时间较长,在接近1亿数据中查询命中730万数据时,查询时间从,随着分页靠后查询时间增加。
以上原因中2,3是主因,1是次因且影响远低于2,3。三:修改后效果:
1:调整查询入快慢池超时时间判断,时间设置100秒,使所有请求不入慢池,时间可节省10秒左右。
2:修正数据源接口的sql,降低查询时间,数据查询性能大大提升,且降低了inti的时间。
PS:经过分析:测试环境中数据存同一机构同一天数据量命中过大730万,该原因导致查询缓慢且索引效果不大,在总数据1亿数据量的情况下,若命中不大时,界面展示不受影响。
作者: yanieye    时间: 2023-6-28 08:57
从提供的问题情况和跟踪过程来看,判断基本是准确的。
1. 使用了真分页的技术,采用的方式类似于select * from tablea where col机构=selected机构 and colDate=selectedDate limit displayedRows, rowsPerPage;
2. 数据库查询的时间包含两个部分:
2.1 是执行where的时间,可以通过保证where条件中用到的列和数据库索引的配合来提高查询效率;可以根据索引的实际效率调整where中的过滤的顺序来配合好;
2.2 是执行limit displayedRows,rowsPerPage的效率, 一般来说翻页也多,已经加载过的数据量也会也大,这会导致后续翻页的时候需要忽略的行数也显著增加,页数越靠后, 消耗时间越多。
也是为什么命中多的时候会慢,翻页之后会逐步变慢。
下面这个帖子里面有一些优化的方式,是通过过滤来替换Limit的方式,不过实现起来也会有一定的难度,可以参考一下是。
https://blog.csdn.net/bisal/article/details/131335748




欢迎光临 永洪社区 (https://club.yonghongtech.com/) Powered by Discuz! X3.4