后端接口性能优化“小妙招”

2023-09-06 0 244

后端接口性能优化“小妙招”

自学 JAVA ,就有赖于前端,而组织工作绝大部分天数他们都是在合作开发销售业务USB,所以其操控性就至关重要。假如USB慢,他们假如从四方面对USB展开强化呢?

01 

擅于采用触发器程式设计

借助多处置器同时实现触发器

较为所推荐用自订TreadPool来同时实现多处置器,在Java 8及以内的版,也能采用CompletableFuture来同时实现。

采用Mq合作开发工具同时实现触发器

那时市售较为盛行的分布式系统NSS有rocketmMq、rabbitMq、kafka等,在Springboot的自然环境中导入有关的NSS也较为简单,这儿就无须约勒了。

02 

【信息量是定值采用大批量与分批操作方式】

1、在查询资料库的这时候他们要尽可能防止在for循环式中操作方式资料库,尽可能采用大批量处置

来对资料库展开操作方式。

在Mybatis中他们能采用大批量处置器来对资料库展开操作方式,MybatisPlus即使为他们PCB好了大批量处置的API。

2、防止在for循环式中展开rpc初始化,尽可能使用大批量查询。

3、假如操作方式的信息量很大,所以他们能展开分批处置,这样能防止一次交互的信息量过大,从而导致USB响应过慢。

03 

【防止大事务】

大事务会带来什么危害?

1、并发情况下,资料库连接池容易被撑爆

2、锁定太多的数据,造成大量的阻塞和锁超时

3、执行天数长,容易造成主从延迟

4、回滚所需要的天数较为长

如何解决大事务问题?

尽可能少采用@Transactional注解,虽然它真的很方便,但是声明式事务很难控制好事务的粒度,所推荐采用程式设计式事务

Spring提供了TransactionTemplate来帮助他们同时实现程式设计式事务。

后端接口性能优化“小妙招”

TransactionTemplate的简单采用:

@Resource private TransactionTemplate transactionTemplate; @Test public void test1(){transactionTemplate.execute(action->{//执行资料库事务操作方式 return null; });    }

04

【强化SQL慢查询】

导致慢查询的原因

1、关键的字段缺少索引

他们能根据Explain分析慢SQL,假如没有建立索引的话,创建索引即可。

2、有索引,但是却没有用上索引

他们通过Explain分析慢SQL,发现没有采用到索引,但是发现已经创建了索引,所以这种情况就是索引失效了。

这儿举例一些索引失效的一些场景:

①.字段类型不匹配

②.索引列采用了函数

③.like采用了左模糊

④.采用了联合索引,但是却不满足最左匹配原则……

后端接口性能优化“小妙招”

3、SQL较为复杂且慢,但是不好强化

建议借助Java代码逻辑来同时实现对应的逻辑,复杂的SQL不仅可能导致慢查询,也不借助后期代码的维护组织工作。

4、数据表数据很多

①.假如旧数据用户访问的较为少,他们能对数据展开冷热分离

②.对数据展开分库分表

假如表的信息量已经很大了,所以他们可能就需要展开分库分表的处置了。能采用ShardingJDBC,Mycat等成熟的合作开发工具或者代理来帮助他们完成。

05 

【擅于借助缓存】

对于并发较为高的系统,缓存是非常有必要的。他们能将一些查询较多、但是修改不频繁的数据放入到缓存中,

这样能帮助他们减少对数据库的访问,不仅能减轻资料库的压力,而且USB的响应速度也能得到很大的提升。

后端接口性能优化“小妙招”

采用Redis作分布式系统缓存

通常他们会借助Redis作为分布式系统缓存合作开发工具,但是在采用Redis的这时候,他们对key的设计要合理,不然出现Big Key,很有可能影响到他们USB的响应速度。

采用Caffeine作为本地缓存

很多这时候除了借助Redis做分布式系统缓存,同时也会做一个本地缓存,减轻redis的压力。这儿以caffeine为例,还有很多其他本地缓存的同时实现。

06

【控制好锁的粒度】

在并发场景下,很多这时候他们都需要采用到锁来帮助他们保证数据的安全性,包括像数据的幂等性处置都需要用到锁。

但是假如不管他们采用Sysnchrnoized关键字,jdk的lock锁,还是分布式系统锁,都需要控制好锁的粒度,假如锁的粒度很大,会影响到他们系统的吞吐量。

后端接口性能优化“小妙招”

了解老九学堂线下高薪就业班详情

相关文章

发表评论
暂无评论
官方客服团队

为您解决烦忧 - 24小时在线 专业服务