前言

接口性能优化对于从事后端开发的同学来说,肯定再熟悉不过了,因为它是一个跟开发语言无关的公共问题。
该问题说简单也简单,说复杂也复杂。
有时候,只需加个索引就能解决问题。
有时候,需要做代码重构。
有时候,需要增加缓存。
有时候,需要引入一些中间件,比如mq。
有时候,需要需要分库分表。
有时候,需要拆分服务。
等等。。。
导致接口性能问题的原因千奇百怪,不同的项目不同的接口,原因可能也不一样。
本文我总结了一些行之有效的,优化接口性能的办法,给有需要的朋友一个参考。

1.索引

接口性能优化大家第一个想到的可能是:优化索引
没错,优化索引的成本是最小的。
你通过查看线上日志或者监控报告,查到某个接口用到的某条sql语句耗时比较长。
这时你可能会有下面这些疑问:

  • 该sql语句加索引了没?
  • 加的索引生效了没?
  • mysql选错索引了没?

1.1 没加索引

ql语句中where条件的关键字段,或者order by后面的排序字段,忘了加索引,这个问题在项目中很常见。
项目刚开始的时候,由于表中的数据量小,加不加索引sql查询性能差别不大。
后来,随着业务的发展,表中数据量越来越多,就不得不加索引了。
可以通过命令:
show index from order;
能单独查看某张表的索引情况。

也可以通过命令:
show create table order;
查看整张表的建表语句,里面同样会显示索引情况。

通过ALTER TABLE命令可以添加索引:

ALTER TABLE `order` ADD INDEX idx_name (name);

也可以通过CREATE INDEX命令添加索引:

CREATE INDEX idx_name ON `order` (name);

不过这里有一个需要注意的地方是:想通过命令修改索引,是不行的。

目前在mysql中如果想要修改索引,只能先删除索引,再重新添加新的。
删除索引可以用DROP INDEX命令:

ALTER TABLE `order` DROP INDEX idx_name;

实例

public class HelloWorld { public static void main(String[] args) { System.out.println("Hello World"); } }

注: String args[] 与 String[] args 都可以执行,但推荐使用 String[] args,这样可以避免歧义和误读。\
运行以上实例,输出结果如下:

$ javac HelloWorld.java
$ java HelloWorld
Hello World

玩命的乌龙茶
1 声望0 粉丝