接口性能优化
接口性能优化对于从事后端开发的同学来说,肯定再熟悉不过了,因为它是一个跟开发语言无关的公共问题。
该问题说简单也简单,说复杂也复杂。
有时候,只需加个索引就能解决问题。
有时候,需要做代码重构。
有时候,需要增加缓存。
有时候,需要引入一些中间件,比如mq。
有时候,需要需要分库分表。
有时候,需要拆分服务。
等等。。。
导致接口性能问题的原因多种多样,不同的项目不同的接口,原因可能也不一样。
本文我总结了一些行之有效的,优化接口性能的办法,给有需要的朋友一个参考
1.索引
接口索引优化是第一能想到得,也是优化成本较低的,通过查看线上日志或者监控报告,查到某个接口用到的某条sql语句耗时比较长
你可能会发生疑问:
-
sql语句加索引了吗?
-
加的索引生效了吗?
-
mysql选错索引了吗?
1.1 检查并添加索引
sql语句中where
条件的关键字段,或者order by
后面的排序字段,忘了加索引,这个问题在项目中很常见, 前期主要完成业务需求。
项目刚开始的时候,由于表中的数据量小,加不加索引sql查询性能差别不大。
后来,随着业务的发展,表中数据量越来越多,性能就就逐渐显现出来,不得不考虑增加索引了。
ALTER TABLE
命令可以添加索引:
ALTER TABLE order
ADD INDEX idx_name (name);
也可以通过CREATE INDEX
命令添加索引:
CREATE INDEX idx_name ON order
(name);
mysql中如果想要修改索引,只能先删除索引,再重新添加新的
ALTER TABLE order
DROP INDEX idx_name;
DROP INDEX idx_name ON order
;
1.2 检查索引是否生效
1、通过命令方式查看索引生效:explain plan for select * from order
where code=‘002’;
2、客户端(DBeaver或者PLSQL)
//补充截图
3、索引是否生效,如果索引已经创建,很大可能索引没有生效;常见索引失效的原因:
2.sql 优化
优化索引,没啥效果,那就接着优化sql,毕竟改sql的成本优于代码
下面整理部分小技巧: