首页 > 其他分享 >记录一次接口性能优化

记录一次接口性能优化

时间:2023-05-10 22:00:09浏览次数:32  
标签:语句 记录 接口 查询 时间 stopWatch 执行 优化

查询接口性能优化

两个查询接口,涉及四个不同的表,其中有一个表数据量较大;
一开始编码实现的方法,调用接口发现耗时特别长,三四秒钟:

使用Spring StopWatch分析代码运行时间,找到是哪里导致整个接口时间需要这么久的:

StopWatch stopWatch = new StopWatch();
// 开始时间
stopWatch.start();
// 执行时间(1s)
Thread.sleep(1000);
// 结束时间
stopWatch.stop();
// 统计执行时间(秒)
System.out.printf("执行时长:%d 秒.%n", stopWatch.getTotalTimeSeconds()); // %n 为换行
// 统计执行时间(毫秒)
System.out.printf("执行时长:%f 毫秒.%n", stopWatch.getTotalTimeMillis()); 
// 统计执行时间(纳秒)
System.out.printf("执行时长:%d 纳秒.%n", stopWatch.getTotalTimeNanos());

先分析什么原因导致的,明显能感觉得到的是查询那个数据量大的表导致调用接口时间过长,检查代码执行逻辑,分析有一些foreach中的查询语句可以提取出来,放在循环外面只需要查询一次保存到内存中,后面使用直接从内存中拿这个值;
然后有一些查询可以进行联表查询,但sql语句改写成联表查询时间反而变长了,没来得及仔细研究是什么原因导致的,也可能是sql语句数据处理有问题;

把for循环中的所有涉及查询数据库的语句能提取出来就提取出来作为公共的,然后就是优化sql语句编写方式,最终将两个查询接口从查询一次需要三四秒甚至四五秒,到七八百、三四百毫秒。

标签:语句,记录,接口,查询,时间,stopWatch,执行,优化
From: https://www.cnblogs.com/techgy/p/17389471.html

相关文章

  • 如何优化一条MySQL查询
    概览1、合理建立索引。在合适的字段上建立索引,例如在where和orderby命令上涉及的列建立索引。可以为经常查询的字段、排序字段和关联查询字段创建索引,但不能滥用索引。索引的过多、过少或者不恰当都会影响查询效率。2、索引优化。防止不走索引,或者走错索引3、分析是否是偶发问......
  • mysql数据记录
    mysql数据记录准备工作创建库、表#创建数据库createdatabasemysql02;#使用数据库usemysql02;#创建表createtablestudent(idint,namevarchar(10),ageint);查看student表结构数据增删改操作知识点插入数据:insertinto表名(字段名1,字段名2,...)values(......
  • ubuntu server版操作系统安装步骤记录
    组内有一个项目支持的时centos的操作系统,后续因为有ubuntu的需求,需要测一下ubuntun操作系统的兼容性,测试前期需要手动为测试服务器装ubuntu的操作系统,因此,这里记录一下自己装ubuntun操作系统的步骤由于项目使用的是ubuntu是18.04.6版本,这里就只记录的是此版本的安装步骤1、下载u......
  • 2023年5月10日记录
    兔子产子问题问题描述有一对兔子,从出生后的第3个月起每个月都生一对兔子。小兔子长到第3个月后每个月又生一对兔子,假设所有的兔子都不死,问30个月内每个月的兔子总数为多少?      改进方案:   ......
  • JDK8新特性(二)--- Option\Stream\函数式接口
    OptionalOptional是一个没有子类的工具类,Optional是一个可以为null的容器对象。它的作用主要就是为了解决避免Null检查,防止NullPointerException。//常用方法Optional.of(Tt):创建一个Optional实例Optional.empty():创建一个空的Optional实例Optional.ofNullable(T......
  • 获取采购信息记录函数BAPI_INFORECORD_GETLIST
    DATA:lt_purchTYPETABLEOFbapieine,lt_returnTYPETABLEOFbapireturn.FIELD-SYMBOLS:<fs_return>TYPEbapireturn,<fs_purch>TYPEbapieine.CALLFUNCTION'BAPI_INFORECORD_GETLIST'EXPORTING......
  • mapper接口开发--条件,为什么是接口、参数
    三个必要条件_mapper.java和_mapper.xml需要在同一个目录这就是为什么看到resources有同样的包xml中的namespace为mapper.java的全限定路径mapper.xml的id和mapper.java的方法名字、参数类型、返回值一致最后通过sqlSession.getMapper(*mapper.class)得到接口,这样就可以......
  • SQL语句性能优化
    1,对查询进行优化,应尽量避免全表扫描,首先应考虑在where及orderby涉及的列上建立索引。 2,应尽量避免在where子句中对字段进行null值判断,创建表时NULL是默认值,但大多数时候应该使用NOTNULL,或者使用一个特殊的值,如0,-1作为默认值。 3,应尽量避免在where子句中使用!=......
  • bitsandbytes--Facebook 推出 8 比特优化器大大减少显存
    “小夕,小夕!又出来了个SOTA模型!赶紧follow!”小夕看了看新模型的参数量,然后看了看实验室服务器的几张小破卡。小夕,陷入了沉默。自从人们发现越大的模型性能越好后,神经网络模型的参数量就在越来越大的道路上一去不复返了。从XX-large到GPT3,再到5300亿参数的MegatronTur......
  • Vue2项目中,在编译打包后通过读取配置文件,任意修改接口地址
    可以按照以下步骤进行操作: 1.在项目根目录下创建一个名为`config`的文件夹,并在该文件夹下创建一个名为`index.js`的文件,用来存放配置文件,如: ```javascriptmodule.exports={  apiRoot:'http://api.example.com'}``` 这里定义了一个`apiRoot`属性,用来存放接口地......