背景
线上系统运行几年后,被项目上提bug,有些接口响应很慢,加载页面要几十秒
解决方案
性能优化成本高,需要开发周期,临时方案先分析慢sql,通过增加索引临时解决
mysql查询数据表,总数50w,单sql查询2秒。 mysql没有问题。问题未解决
在本地开发库,接口都很快,1秒以内。所以为了重现问题,导出线上数据库表,本地重现以及分析代码。把线上库导入到本地库,执行之后,模拟用户参数,发现接口确实很慢,要几十秒。
找到接口代码,进行分析。发现存在循环,按每查询一次2秒,循环几十次,时间确实吓人
把单个循环查询,改成批量查询。接口就只用查2次数据库,时间控制在5秒
5、步骤五,加缓存(可不做)
如果5秒,还不能满足。可以考虑加缓存,数据查询之后,把数据放入redis缓存,设置缓存过期策略。
总结
4、循环多次写数据,改成批量写数据
5、以上都不能满足,考虑加缓存
6、如果数据表数据量达到千万,考虑历史数据保存到es,非历史数据存mysql的方案。进行分库分表等处理
原文地址:https://blog.csdn.net/s07aser123/article/details/134682017
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.7code.cn/show_5749.html
如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除!
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。