性能优化都不会,还敢说自己是高级工程师

Posted lyl6796910

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了性能优化都不会,还敢说自己是高级工程师相关的知识,希望对你有一定的参考价值。

一、数据库优化

一般来说,当一个请求超过200ms,就需要优化了,当前这不是绝对的标准,具体看业务场景。

sql优化一般包括

1、是否命中索引

2、设计是否合理

3、关联查询是否合理

实在数据量大,只能在拆分了。如果需要同时插入许多数据,尽可能使用 BulkCopy 操作以提升性能。

 

使用云数据库的监测慢查询、MiniProfiler

 

二、代码优化

1、重复调用

在代码当中,重复的调用执行sql、计算方法等,比如在循环的方法当中,根据id查询数据库,循环100次查询100次sql,这种是很崩溃的做法,应该是在外面直接统一查询;

在做事务处理的时候,一些查询动作需要先处理查询,最后在执行事务,避免事务时间过长,导致死锁;

避免循环创建对象;

使用StringBuilder做字符串连接等。

 

使用MiniProfiler进行监测;

 

2、按需查询

很多业务逻辑不复杂的功能,却响应很慢。往往都是直接就调用一些已经存在的方法,导致整体响应变慢,或者可能就需要一两个字段,结果把所有的字段都处理了。其实就是避免查询的时候直接select *,返回的时候不要整个实体对象返回。

 

3、加缓存

缓存也是优化中最常用的,效果提升最明显的,成本也不大。对于缓存,也不要滥用,不是所有场景都可以靠堆缓存来提高性能的。

首先对于实时性要求不高的业务场景可以优先使用缓存,也不用太考虑更新的问题,自然过期就行。

实时性要求高的业务场景,用缓存一定要有完整的缓存更新机制,否则很容易造成业务数据和缓存数据不一致的情况。

 

推荐使用redis,支持分布式.

 

三、异步处理

有些逻辑,不需要实时反馈给用户、或者耗时的那就可以采用异步的方式在后台进行处理。

 

可以使用消息队列rabbitmq、后台服务hangfire等

 

四、扩容

加机器是最后的终极大招了,并发量上去的时候,你在怎么优化单机器和单数据库抗并发能力也是有限的,这个时候只能水平扩展了。

 

做负载均衡等

 

以上是关于性能优化都不会,还敢说自己是高级工程师的主要内容,如果未能解决你的问题,请参考以下文章

C++对象的底层原理都在这儿了,还敢说学不会?

C++对象的底层原理都在这儿了,还敢说学不会?

SOLID原则都不知道,还敢说自己是搞开发的!

大厂都在裁员,你还敢说学不动了吗?

京东T6:这份《Java 异步编程实战》文档看完还敢说不会?

看到这个冒泡排序优化,还敢说不懂吗