公司网站模板 网盘下载,网站优化怎样提高网站用户体验,网站型营销,网站建设服务协议 百度目录 背景
解决方案
总结 背景 线上系统运行几年后#xff0c;被项目上提bug#xff0c;有些接口响应很慢#xff0c;加载页面要几十秒 解决方案
1、步骤一#xff0c;加索引
性能优化成本高#xff0c;需要开发周期#xff0c;临时方案先分析慢sql#xff0c;通过增…目录 背景
解决方案
总结 背景 线上系统运行几年后被项目上提bug有些接口响应很慢加载页面要几十秒 解决方案
1、步骤一加索引
性能优化成本高需要开发周期临时方案先分析慢sql通过增加索引临时解决
效果 增加索引之后见效甚微。问题未解决
2、步骤二分析查询性能
排查sql执行时间定位是不是mysql服务器问题
mysql查询数据表总数50w单sql查询2秒。 mysql没有问题。问题未解决
3、步骤三导出线上库重现问题
在本地开发库接口都很快1秒以内。所以为了重现问题导出线上数据库表本地重现以及分析代码。把线上库导入到本地库执行之后模拟用户参数发现接口确实很慢要几十秒。
找到接口代码进行分析。发现存在循环按每查询一次2秒循环几十次时间确实吓人 4、步骤四修改问题
把单个循环查询改成批量查询。接口就只用查2次数据库时间控制在5秒 5、步骤五加缓存可不做
如果5秒还不能满足。可以考虑加缓存数据查询之后把数据放入redis缓存设置缓存过期策略。
总结
接口性能差可以通过下面几个方面进行优化
1、分析mysql加索引
2、清理数据表垃圾数据减少数据量
3、分析代码循环多次查数据表优化成批量查数据表
4、循环多次写数据改成批量写数据
5、以上都不能满足考虑加缓存
6、如果数据表数据量达到千万考虑历史数据保存到es非历史数据存mysql的方案。进行分库分表等处理