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

微信扫一扫,分享到朋友圈

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

一、数据库优化

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

sql优化一般包括

1、是否命中索引

2、设计是否合理

3、关联查询是否合理

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

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

二、代码优化

1、重复调用

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

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

避免循环创建对象;

使用StringBuilder做字符串连接等。

使用MiniProfiler进行监测;

2、按需查询

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

3、加缓存

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

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

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

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

三、异步处理

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

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

四、扩容

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

做负载均衡等

Python自动化办公之Word批量转成自定义格式的Excel

上一篇

Anchor-free目标检测 | 工业应用更友好的新网络(附大量相关论文下载)

下一篇

你也可能喜欢

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

长按储存图像,分享给朋友