接口性能调优的方法,这有11种,你知道几种?

本文探讨了接口性能调优的11种方法,包括优化索引、SQL语句优化和并行调用远程接口等。通过添加、调整索引,解释查询计划来检查索引使用,以及并行化接口调用来提升性能。对于远程接口,建议从串行调用转为并行调用以减少总耗时。

​当我们谈到“软件测试”时,是指软件测试的相关工作,如单元测试、集成测试、系统测试等,但不局限于动态测试,也可以包括静态测试——需求评审、设计评审、代码评审和借助工具进行代码静态分析。

接口性能调优共11种方法,更多方法请查看:接口性能调优的方法全解

正文开始
相关系列优选文章:
(1)【性能测试】常见性能瓶颈解析及调优方案
(2)性能测试思维是这样形成的!
前言
接口性能优化对于从事后端开发的同学来说,或加个索引就能解决问题,或需要做代码重构,或需要增加缓存,或需要引入一些中间件,比如 mq,或需要分库分表,或需要拆分服务。。。
导致接口性能问题的原因千奇百怪,不同的项目不同的接口,原因可能也不一样。
我们一起来讨论以下行之有效的优化接口性能的办法:
1.索引
接口性能优化最先想到的可能是:优化索引,因为其优化成本是最小的,可通过查看线上日志或者监控报告,筛查出某个接口调用的某条SQL语句耗时问题。
排查时一般从以下几点进行:

SQL语句加索引了没?
加的索引生效了没?
mysql 选错索引了没?

1.1 无索引 情况下
在项目中很常见的问题:SQL语句中忘了where条件的关键字段,或者order by后面的排序字段加索引。
项目初期由于表中的数据量小,无索引 SQL查询也不会引起大的性能问题。
但随着业务壮大,表中数据量越来越多,就不得不加索引了。

show index from table_name;

能单独查看某张表的索引情况。

show create table table_name;

查看整张表的建表语句,里面也会展示索引情况。

如果无索引,则可以通过ALTER TABLE命令,或者CREATE INDEX命令添加索引:

ALTER TABLE table_name ADD INDEX idx_name ( field_name );
或者
CREATE INDEX idx_name ON table_name (field_name);

目前在 mysql 中,想要修改索引则只能先删除索引后,再重新添加新的索引。其中删除索引方式有2种:ALTER TABLE命令、DROP INDEX命令

ALTER TABLE table_name DROP INDEX idx_name;
或者
DROP INDEX idx_name ON table_name;

1.2 添加的索引没生效

show index from table_name;

通过查询得知有索引,但它生效了没?如何进行查看索引有没有生效呢?

explain select * from table_name where code=‘002’;

是的,用explain命令来查看 mysql 的执行计划,它会显示索引的使用情况。

这几列就可以判断索引使用情况:

那么你知道索引失效的常见原因吗?

如果上面2个都没问题,则需要进一步排查其他原因。
1.3 选错索引
常常有这种情况:同一条SQL,只有入参不同而已,但有时走的索引 a,有时却走的索引 b?
必要时则可用force index来强制查询SQL走某个索引。
在这里插入图片描述

  1. SQL 优化
    如果优化索引后也对性能改变不大,则试着优化一下SQL语句,在这列举了 SQL优化的小技巧,共15种:

  2. 远程调用
    很多时候,我们需要在某个接口中,调用其他服务的接口。
    有这样的业务场景:
    用户信息查询接口中需要返回:用户名称、性别、等级、头像、成长值、积分等信息。
    而用户名称、性别、等级、头像在用户服务中,成长值在成长值服务中,积分在积分服务中。为了汇总这些数据统一返回,需要另外提供一个对外接口服务。
    这种业务场景下,我们就需要在某个接口中,调用其他服务的接口,即用户信息查询接口需要调用用户查询接口、成长值查询接口和积分查询接口,然后汇总数据统一返回。

如此计算,串行调用接口总耗时200ms + 150ms + 180ms = 530ms。

针对该情况,如何优化远程接口性能呢?

3.1 并行调用
既然串行调用多个远程接口性能很差,那我们可以改成并行调用:

这样则只需要取即耗时最长远程接口调用。

接口性能调优共11种方法,更多方法请查看:接口性能调优的方法全解

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值