接口响应优化方案

Posted jiangzhongwei_

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了接口响应优化方案相关的知识,希望对你有一定的参考价值。

        最近收到客户反映系统卡顿严重,然后让他截图看了下,最长响应时长居然高达16s,其他3s,4s的接口一大堆,简直是恐怖!

          简单来说,这个耗时16s的接口其实是统计一张历史数据表里的数据,这张表大概有三百多万条数据,日增长1万左右,因为客户要求最多留存2年,所以也不必考虑分表了。

        看了下查询逻辑,其实也比较简单,就是根据两个字段去数据库里筛选,但是查询出来的数据量比较大,所以不管怎么优化都效果不好;然后我注意到该表使用innoDb存储引擎,考虑到历史数据表查多写少,是不是用Myisam存储更好?想到就做,先导出表结构和数据,直接在sql里修改表引擎,再重新刷一遍。最后在页面上刷新接口,居然只需要1s多就返回了!犀利!

        然后其他接口慢大概就是一些比较低级的问题了:

       1. 大表查询不加索引

       2. 多表关联查询甚至3张,4张表一起join(我只想说这种人真是懒到家了)

       3. 一个接口封装了好几个方法,有些方法已经查询过的数据,其他方法又查了一遍

       4. 返回树结构数据时直接在mybatis的xml里递归查询(懒!)       

       5.  一些字段包含大量content文本,一股脑用select * 捞出来

       6.  在java循环里查询数据库(懒)

       7.   时间范围查询不走索引,可以使用时间戳代替

       8.  用大表去驱动小表查询效率低(有个最简单的写法,不要用join on,直接逗号去隔开就行了,让mysql去自行判断)

     

以上是关于接口响应优化方案的主要内容,如果未能解决你的问题,请参考以下文章

您的用户体验优化方案到了,请签收~

项目之接口响应慢排查

Jprofiler 监控cpu过高或者响应时间过长

Mybatis批量更新优化方案

干货分享|springboot缓存开发实战

接口响应时间从2s优化到 200ms以内第一季