接口性能优化

文章介绍了提升接口性能的多种方法,包括批处理减少IO操作,使用异步处理降低响应时间,利用缓存加速数据获取,预处理和并行处理提高效率,正确使用索引,避免大事务,优化程序结构,解决深分页问题以及细粒度锁管理。
摘要由CSDN通过智能技术生成

一:接口的性能优化

    1、批处理:在循环插入场景的接口中,在批处理执行完成后一次性插入或更新数据库,避免多次IO

    2、异步处理:针对耗时较长且不是结果必须的逻辑,可以考虑放到异步执行,降低接口耗时
        异步的实现方式:线程池,消息队列,调度任务框架

    3、空间换时间:合理使用缓存,针对一些频繁使用且不频繁变更的数据,可以提前缓存起来,需要时直接查缓存,避免频繁的查询数据库或者重复计算
        缓存:redis,memcached,R2M,本地缓存,或者Map
    
    4、预处理:预取思想,提前把要查询的数据提前计算好,放入缓存或者表中的某个字段,用的时候会大幅提高接口性能
    
    5、池化思想:避免重复创建对象或创建连接,可以重复使用,避免不必要的损耗,毕竟创建销毁也会占用时间。池化思想的本质是预分配和循环使用
        池化思想的体现:数据库连接池,线程池等

    6、串行改并行:串行就是当前执行逻辑必须等上一个执行逻辑结束之后才执行,并行就是两个执行逻辑互不干扰,所以并行相对来说就比较节省时间,当然    是建立在没有结果参数依赖的前提下

    7、索引:能大大提高数据查询的效率,在接口设计之初就应该考虑到
        索引不生效场景:
            1)隐式类型转换
            2)select *
            3)对索引进行列运算(+,-,*,/)
            4)不满足最左匹配原则
            5)使用or关键字——在MYSQL5.0之前
            6)not in 和 not exists
            7)order by 和搜索列不匹配
            8)使用了<>,!=
            9)like 以通配符开头(‘%abc’)

    8、避免大事物:所谓大事物就是运行时间比较长的事物,由于事物一直不提交会导致数据库连接一直被占用,影响到别到请求访问数据库,影响性能
        避免大事物的方案:
            1)RPC调用不放到事物里面
            2)查询操作尽量不放到事物中
            3)事物中避免处理太多数据

    9、优化程序结构:在多人维护一个项目时,多次需求迭代,代码叠加形成一些重复查询,多次创建对象等耗时问题,需要对接口整体进行重构,评估每个代码    块的作用和用途,调整执行顺序。
    
    10、深分页问题:select * from product where status=1 and id >100000 limit 20;
        优点:命中了主键索引,无论多少页性能都还不错,局限性是需要一个连续自增的字段

    11、sql优化

    12、锁粒度避免过粗:锁一般是为了在高并发场景下保护共享资源采用的一种手段,但是如果锁的粒度太粗,会很影响接口性能的,只需要在临界资源处加锁    即可,不涉及共享资源的不必要加锁。
        例:你要上卫生间只需要把卫生间的门锁上就行,不需要把客厅的门也锁上。


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值