首页 > 其他分享 >自主阅读笔记01《如何给详情页做性能优化的》

自主阅读笔记01《如何给详情页做性能优化的》

时间:2023-03-16 12:23:23浏览次数:28  
标签:异步 事务 01 接口 索引 详情页 笔记 缓存 优化

笔记来源   公众号--架构师

接口优化方案总结

1.批处理

批量思想:批量操作数据库,这个很好理解,我们在循环插入场景的接口中,可以在批处理执行完成后一次性插入或更新数据库,避免多次IO。

//批量入库
batchInsert();

2.异步处理

异步思想:针对耗时比较长且不是结果必须的逻辑,我们可以考虑放到异步执行,这样能降低接口耗时。至于异步的实现方式,可以用线程池,也可以用消息队列,还可以用一些调度任务框架。

3.空间换时间

合理使用缓存,针对一些频繁使用且不断变更的数据,可以提前缓存起来,需要时直接查缓存,避免频繁的查询数据库或者重复计算。

4.预处理

预取思想,就是提前把查询的数据提前计算好,放入缓存或者表中的某个字段,用的时候会大幅提高接口性能。

5.池化思想

避免重复创建对象或创建连接,可以重复利用,避免不必要的损耗,毕竟创建销毁也会占用时间。池化思想包含但并不局限于以上两种,总的来说池化思想的本质是预分配与循环使用,明白这个原理后,我们即使是在做一些业务场景的需求时,也可以利用起来。

6.串行并改行

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

7.索引

加索引能大大提高数据查询效率,但是索引也有不生效的场景

  1. 隐式类型的转换
  2. select*
  3. 对索引进行列运算
  4. 不满足最左匹配原则
  5. 使用or关键字
  6. not in和not exists
  7. order by和搜索列不匹配的坑
  8. 使用了<、>、!=
  9. like以通配符开头

8.避免大事务

所谓大事务问题,就是运行时间较长的事务,由于事务一致不提交,会导致数据库连接被占用,影响到别的请求访问数据库,影响别的接口性能。

可以通过以下方案规避:

1,RPC调用不放到事务里面

2,查询操作尽量放到事务之外

3,事务中避免处理太多数据

9.优化程序结构

程序结构问题一般出现在多次需求迭代后,代码形成叠加。会造成一些重复查询、多次创建对象耗时问题。需要针对接口整体做重构,评估每个代码块的作用和用途,调整执行顺序。

10.深分页问题

常见的就是数据库操作中的limit

可以通过优化命中主键索引的方式进行优化

11.SQL优化

可以大幅提高接口的查询性能

12.锁粒度避免过粗

管是synchronized还是redis分布式锁,只需要在临界资源处加锁即可,不涉及共享资源的,不必要加锁

 

 

标签:异步,事务,01,接口,索引,详情页,笔记,缓存,优化
From: https://www.cnblogs.com/cyk612/p/17222089.html

相关文章

  • QT5笔记: 21. QStandardItemModel
    QStandardItemModel存放数据QItemSelectionModel选择项模型例子:本例子中QListView没有做任何处理,只是拖放至ui文件,设置了布局mainwindow.h#ifndefMAINWINDOW_H#......
  • QT5笔记: 22. 自定义代理
    代理作用:在界面发生编辑时可以指定编辑所用的组件,可以沟通Model和View自定义代理需要继承的基类和需要实现的方法使用步骤:继承QStyledItemDelegate,实现上面的四个......
  • Wallys|DR4019S|IPQ4019|Support 11ABGN/802.11AC
     Ifyou'reinthemarketforahigh-performanceWi-Fisolutionforyourbusinessorhome,looknofurtherthantheQualcommIPQ4019.Thiscutting-edgesyste......
  • 人月神话阅读笔记其一————“人月”神话
        首先在阅读之前就感觉很困惑,一部将编程的著作为什么会起一个这样的名字。再后来的阅读过程中也才逐渐明白,“人月”实际上就是一个具有欺骗性的神话。在编程中,“......
  • P8682 [蓝桥杯 2019 省 B] 等差数列
    P8682[蓝桥杯2019省B]等差数列[蓝桥杯2019省B]等差数列题目描述数学老师给小明出了一道等差数列求和的题目。但是粗心的小明忘记了一部分的数列,只记得其中N......
  • 《Hadoop Operations》读书笔记 - 2 - 第三章 MapReduce
    MapReduce,在这里实际上有两个含义,一个是一种分布式计算模型;另一个是某种特定实现,比如ApacheHadoopMapReduce。其设计目的是为了简化大规模、分布式、高容错性的数据处理应......
  • 《Hadoop Operations》读书笔记 - 1 - 第二章 HDFS
    传统存储是SAN或者NAS,提供了集中化、低延时的块存储或者文件系统,以支持TB级数据。在面对关系型数据库之类的服务时,这是很好的选择。但是面对上万台计算机同时提取几百TB......
  • JSP学习笔记
    responsesendRedirect();重定向操作,使用后重新生成新的response(不能传递request对象)request.getRequestDispatcher("login.jsp").forward(request,response);getParamet......
  • 论文笔记:Optimizing Queries Using Materialized Views: A Practical, Scalable Solut
    论文笔记:OptimizingQueriesUsingMaterializedViews:APractical,ScalableSolution微软SQLServer关于优化器如何利用物化视图来改写查询的论文。它主要处理SPJG......
  • Python&Pandas学习笔记
    df.locAccessagroupofrowsandcolumnsbylabel(s)orabooleanarray.只能通过标签和布尔值来索取数据df.loc[]与df.iloc[[]]的区别:[]返回一个Series,[[]]......