1.缩减事务范围,事务大,提交事务、回滚时缓慢,
2.去掉查库,改为查询缓存,远程缓存缓慢时,切换为本地缓存。
3.接口只进行读取操作,职责单一
4.调用外部多个接口,采用线程池并行,同时对每个请求采取超时控制
5.查询结果进行缓存,但大多数接口结果各不相同,这时可以对局部方法结果进行缓存。
6.更新操作采取主键
7.机房垂直调用
8.优化jvm参数,减少stoptheworld次数和时间
9.将定时任务、MQ消费等重io操作单独提出来,查询时走从库,降低主库压力。
10.分批操作,比如10000条数据,分成100份分批请求
11.非主线业务逻辑异步化,通过mq、事件、线程。
12.缓存更新等操作,采取binlog方式,binlog监听后,通过MQ方式达到异步写入。
13.sql优化,防止多子查询、连接查询、跨库查询、非索引查询等,宽表、范围、模糊查询进一步提高可采用es。
14.预先计算,当性能不达标时,采取提前计算结果,直接返回的方式,会造成数据延迟较大!
15.方法层面提高,在大数据量时,采取更优的算法。比如取数据交集时,采用hashSet方式更快,不要进行嵌套for循环。
16.多次调用时,提供批量方法,不要循环RPC调用。
17.方法层面提高,上文查询过得方法,下文不断继续查询多次。要提高数据的利用率。