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

news2025/7/20 17:27:32

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

接口性能调优共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种方法,更多方法请查看:接口性能调优的方法全解

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/7915.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Nftea: 世界杯文化、 NFT与 期权的首度碰撞

体育文化,正在成为加密行业发展的新驱动力 卡塔尔世界杯即将在2022年11月20日开幕,随着开赛日期的临近,作为四年一度的足球狂欢盛会,也吊足了全球足球球迷们的胃口。当然,从上个世纪开始,体育文化就成为了商…

Slurm作业管理系统常用命令和教程

Slurm ( Simple Linux Utility for Resource Management )是开源的、具有容错性和高度可扩展大型和小型 Linux集群资源管理和作业调度系统。超级计算系统可利用 Slurm 进行资源和作业管理,以避免相互干扰,提高运行效率。所有需运行…

charles

charles中文名叫青花瓷,是一款基于HTTP协议的代理服务器。通过电脑或浏览器的代理来截取请求和请求结果,达到抓包并进行数据分析的目的。charles可以截取HTTP和HTTPS的网络封包,支持重发网络请求、修改网络请求参数、流量控制等场景 安装 由…

LeetCode刷题(python版)——Topic65.有效数字

一、题设 有效数字(按顺序)可以分成以下几个部分: 一个 小数 或者 整数(可选)一个 e 或 E ,后面跟着一个 整数 小数(按顺序)可以分成以下几个部分: (可选&…

Vue:搭建前端项目-----我给你打个样

如果文章对你有帮助欢迎【关注❤️❤️❤️点赞👍👍👍收藏⭐⭐⭐】一键三连!一起努力! 家人们好久不见,这次我们继续上干货,我们来介绍一下如何使用vue搭建一个前端项目; 在这里我会…

pytest fixture 中的使用包信scope skip conftest.py 和参数化等功能使用

pytest中所谓的夹具: fixture scope参数详解: scope: 表示fixture共享夹具的范围,有以下五个范围 function 功能: 在函数或方法运行时执行fixture函数的功能 默认作用域 class 功能:在类运行时调用一次。…

Mindspore网络构建

网络构建 神经网络模型是由神经网络层和Tensor操作构成的,mindspore.nn提供了常见神经网络层的实现,在MindSpore中,Cell类是构建所有网络的基类,也是网络的基本单元。一个神经网络模型表示为一个Cell,它由不同的子Cell…

【python】常见的正则表达式用法;匹配字符串

本文仅仅展现了python正则表达式中的一小部分内容,但是包含了实际应用中非常被频繁使用的例子,本文重在举例,即不需要相关语法知识就能够会用~ 目录re.match()re.findall()匹配两个字符串之间的字符串并返回匹配某字符串之前/之后的所有字符串…

matlab使用NCL提供的colormap

一、自带的colormap matlab默认提供了几个基础的colormap,比如常见的jet和parula matlab里调用colormap的命令是 colormap(jet) jet到底代表什么呢。 可以看到其表示n*3的矩阵,数字介于0-1之间,分别代表红绿蓝。 二、m_map的colormap m_…

数据库系统概论第六章(关系数据理论)知识点总结(2)—— 码的概念总结

本专栏收录了数据库的知识点,而从本文起,将讲述有关于关系数据理论中的第一范式、第二范式、第三范式以及BC范式有关知识点,提供给有需要的小伙伴进行学习,本专栏地址可以戳下面链接查看 🎈 数据库知识点总结&#xff…

今年的数据安全风险点是什么?看数据

2022年已接近尾声,降低数据安全风险,加强防御能力依然是政企发展中的重点和目标。 2022年全球网络安全、数据安全事件频发,钓鱼、勒索、欺诈等复合攻击层出不穷,这里对2022年部分时间段的数据进行统计,并且这一趋势很…

基于微信小程序的高校餐厅食品留样管理系统设计与实现-计算机毕业设计源码+LW文档

小程序开发说明 开发语言:Java 框架:ssm JDK版本:JDK1.8 服务器:tomcat7 数据库:mysql 5.7(一定要5.7版本) 数据库工具:Navicat11 开发软件:eclipse/myeclipse/idea Mav…

图形学-几何-曲线与曲面

1.什么是曲线 我们使用一系列的点去定义一条曲线。这些控制点描述了曲线的一些性质。最常见的曲线叫做贝塞尔曲线(Bzier Curve)。 1.1 贝塞尔的画法 在三个点的情况下。在二维情况下,使用三个控制点画出的贝塞尔曲线称为二次贝塞尔曲线&am…

第三节.常用Linux命令—文件和目录

第三节.常用Linux命令—文件和目录 1.查看目录内容:ls 1).功能: 列出目录的内容 2).常用选项: 参数含义-a显示指定目录下所有子目录和文件,包含隐藏文件(以 开头的文件)-l以列表形式显示文件的详细信息-h配合 -l 以人性化的方式显示文件大小 3).计算机中文件大小…

【数据结构初阶】(栈和队列)图文详解四道oj+三道easy概念题

你也会感到孤独吗? 文章目录一、队列和栈的接口二、有效的括号2.1 思路呈现2.2 代码呈现细节讲解三、用队列实现栈3.1 思路呈现3.2 代码呈现细节讲解3.3 总结四、用栈实现队列4.1 思路呈现4.2 代码呈现细节讲解4.3 总结五、设计循环队列5.1 思路呈现5.2 数组5.3 链表…

海思3559AV100 gdb+gdbserver调试·基础篇

问题描述 随着程序越来越复杂,单靠输出信息调试程序已然是不合适的,所以必须考虑使用gdb调试,由于板子上比较难加载代码,所以最合适的办法应该是gdbgdbserver远程调试,这样我们可以清楚地看到程序的运行信息。gdb官方…

第三章 组合逻辑电路

思维导图 笔记 组合逻辑电路 电路在任意时刻的输出状态仅由该时刻的输入信号决定,与电路在此信号输入之前的状态无关。 组合逻辑电路的分析 分析步骤 ①根据逻辑电路图,写出输出逻辑函数的表达式 ②根据逻辑表达式,列出真值表 ③由真值表或…

前端动画的另一种方式 json动画

前言 一谈到前端动画,最先想到的就是css3,当然这是其中一种方式,甚至有许多动画库,aniamte.css就是其中的一种。 我之前也谈到过三种做前端动画的方式 https://blog.csdn.net/glorydx/article/details/116102127 但现在&#x…

linux笔记(2):vscode插件remote WSL远程使用交叉编译工具链(全志D1-H)

文章目录1.前期准备1.1 Windows有对WSL文件读写的权限1.2 WSL的C语言编译环境已经搭建完毕2.在windows的vscode安装remoteWSL插件3.从ubuntu启动windows端的vscode4.使用vscode编译ubuntu端的c文件4.1 在《tasks.json》指定可视化make命令4.2编写Makefile文件4.3 开始编译4.3.1…

27服务-安全访问状态转换

诊断协议那些事儿 诊断协议那些事儿专栏系列文章,本文将介绍安全访问状态图——作为UDS27服务的规范性附件。 可参考前两篇文章: 27服务-SecurityAccess UDS - 深论Security Access Service 27服务的初衷就是防止无权限人员进行非法数据操作&#xff…