前言
接口性能优化对于从事后端开发的同学来说,肯定再熟悉不过了,因为它是一个跟开发语言无关的公共问题。
该问题说简单也简单,说复杂也复杂。
有时候,只需加个索引就能解决问题。
有时候,需要做代码重构。
有时候,需要增加缓存。
有时候,需要引入一些中间件,比如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
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。