首页 > 其他分享 >总监面(高级或架构):如何找到缓慢代码并判定代码执行效率,以及优化它的思路

总监面(高级或架构):如何找到缓慢代码并判定代码执行效率,以及优化它的思路

时间:2023-07-14 10:55:14浏览次数:46  
标签:架构 代码 查询 判定 代码执行 sql java 优化 效率

1、先使用一些集成测试插件(比如jmeter、metershpere)或者脚本定位到慢速接口,也可以通过日志分析cat | grep

2、使用sonar、findbugs之类的插件定位复杂度较高的代码,(分析一下算法复杂度和空间复杂度)以及sql调用部分的代码

3、先将调用的sql放到mysql上运行一遍,观测执行速度,如果存在慢速sql,先优化它(这一步也可以通过慢查询日志或者sonar提前或者事后检测)

4、该加索引的加索引、简化sql的简化sql,可以使用explain查询计划分析索引使用情况

5、如果单靠sql的优化无法解决问题,就使用多个线程分开查询数据,最后统计完成返回。原则上如果使用微服务的架构,尽量不出现三张表以上的联查。web端编写sql原则上尽量简单易用、易维护,尽量不写复杂sql和动态查询之类的复用,宁愿多写几条sql用。

(

为什么可以用java多线程调用再整合优化复杂sql呢,因为java是基于已查询好的sql数据,不需要想sql一样分析sql再计算表连接,java直接将数据读进内存,一般是比sql扫描全表数据要快的,for循环匹配的效率本质上可能和join计算的效率一样。快就快在java读进内存操作的数据比sql要少很多,最后整合的效率可能会被sql分析、计算表连接之类的操作抵消掉

)

6、如果代码和sql都优化到极致还是不满意,使用redis缓存,先对一些常用且不会变化的表进行缓存和双写一致,比如系统表、用户表、字典表

7、sql部分优化完成,依然效率低,开始解读代码部分。for循环的嵌套层数,需不需要forjoin来解决

8、最后、以上操作均不能提高效率,那就考虑整体缓存接口数据,做好一致性策略。再不行问产品需求合不合理

标签:架构,代码,查询,判定,代码执行,sql,java,优化,效率
From: https://www.cnblogs.com/benjerry/p/17552627.html

相关文章

  • 微服务架构在前端开发中的应用
    前端服务化和小程序容器技术为前端应用带来了更好的组织结构、可维护性和可扩展性。这些技术的应用将促进前端开发的创新和发展,使团队能够更好地应对复杂的前端需求和业务挑战。通过将前端视为一个服务化的架构,我们能够构建出更强大、可靠且可持续的前端应用。微服务架构是一种软......
  • 怎样优雅地增删查改(五):按组织架构查询
    @目录原理实现应用测试之前我们实现了Employee,Alarm管理模块以及通用查询应用层。Employee的集合查询业务,是通过重写CreateFilteredQueryAsync方法,来实现按组织架构查询的过滤条件。我们将这段逻辑代码提取到通用查询应用层中,便可实现在任何业务的按组织架构查询。原理Employ......
  • scrapy架构
    1selenium爬取京东商品信息importtimefromseleniumimportwebdriverfromselenium.webdriver.common.byimportByfromselenium.webdriver.common.keysimportKeys#键盘按键操作fromselenium.webdriver.chrome.optionsimportOptionsdefget_goods(bro):......
  • 如何实现saas 权限架构设计的具体操作步骤
    SaaS权限架构设计概述在SaaS(SoftwareasaService)应用中,权限管理是一项非常重要的功能。它允许系统管理员对用户的访问和操作进行精细的控制,确保系统的安全性和数据的隔离性。本文将介绍实现SaaS权限架构设计的流程和每一步需要做的事情,以及相应的代码示例。流程图下面的表格......
  • MVC 模式和三层架构
    MVC模式MVC是一种分层开发的模式,其中:M:Model,业务模型,处理业务V:View,视图,界面展示C:Controller,控制器,处理请求,调用模型和视图控制器(serlvlet)用来接收浏览器发送过来的请求,控制器调用模型(JavaBean)来获取数据,比如从数据库查询数据;控制器获取到数据后再交由视图(JSP)进行数......
  • 就是个复述吧,去年九月份我确实找到工作了,今年5月底离职了,公司技术架构和项目太杂太老
    手写简易spring`packagecom.spring.utils;importcom.spring.BeanDefinition;importcom.spring.inteface.Autowried;importcom.spring.inteface.Component;importcom.spring.inteface.ComponentScan;importcom.spring.inteface.Scope;importcom.spring.service.UserS......
  • 架构设计
    架构设计主要目的是为了解决软件系统复杂度带来的问题。复杂度来源于高性能、高可用、低成本、安全、扩展性等方面。基本原则:合适、简单、演化。起始时先从简单出发,后续再根据需要逐渐迭代演化,不要为难以预测的未来过度设计。高性能方案:读写分离、分库分表、NoSQL、缓存。......
  • 解决业务架构图的具体操作步骤
    如何实现业务架构图1.介绍在软件开发过程中,业务架构图是一种常用的工具,用于描述系统的各个模块、组件之间的关系和交互。通过业务架构图,开发人员可以更好地理解系统的整体结构和流程,从而更好地进行开发工作。本文将向新手开发人员介绍如何实现一个简单的业务架构图。我们将使用......
  • CPU架构
    1.概述CPU架构是CPU厂商给CPU产品定的一个规范,主要是为了区分不同类型的CPU.目前市场的CPU分类主要分为两大战营,一个是intel,AMI为首的复杂指令集CPU,另一个是以IBM,ARM为首的精简指令集CPU. 2.x86架构x86指令集发展IA: IntelArchitecture IA-32:Inte......
  • 如何实现业务架构的具体操作步骤
    实现“业务架构”的流程为了实现业务架构,我们需要按照以下步骤进行操作:步骤描述步骤1确定业务需求步骤2设计业务架构步骤3实现业务架构步骤1:确定业务需求在这一步中,我们需要与客户或相关利益相关者交流,了解他们的业务需求。这可以通过会议、访谈或调......