• 项目运行慢的原因剖析


    项目运行慢的原因剖析

    背景

    打开Chrome浏览器,输入url之后,其他页面显示都正常,但是当打开问题(暂且称为问题url)url的时候,服务器给回的响应特别慢。

    剖析原因

    前端原因

    慢的原因很有可能是js文件或者css文件使用的cdn加速,但是有的cdn加速会特别慢,这就导致了使用cdn服务器的响应回的特别慢,导致浏览器给用户的响应就慢。所以打开F12调试窗口,查看如下:

    会发现主要的时间都浪费在index的请求,点击进去会发现一个url延迟特别高。这就排除了前端原因了。

    后台原因

    找到对应的controller的url,然后发现对应的应该也没问题啊,取表中的数据,

    将其拷贝到idea数据库的console进行搜索,

    数据都是毫秒级别的,不可能这么慢。那问题到底在哪?

    进入debug模式,然后单步执行

    查看执行sql的debug模式:

    会发现直接执行了应该执行的sql方法,其他下面我确实没写。直到后来,查看我的mapper的xml文件

    其中这个BaseResultMap是映射集,他的映射集是这样写的。

    <resultMap id="BaseResultMap" type="cn.tj.entity.Application">
        ....
        <result column="app_create_time" property="appCreateTime" jdbcType="DATE"/>
        <result column="app_interview_pass" property="appInterviewPass" jdbcType="VARCHAR"/>
        <result column="app_interview_time" property="appInterviewTime" jdbcType="DATE"/>
        <association property="user" column="user_id" select="cn.tj.mapper.UserMapper.selectByPrimaryKey"/>
    </resultMap>
    

    你会想问那为什么会出现TrainMapper的selectByPrimaryKey的sql呢,没错,就是在userMapper里面还有Train的引用。如下图:

    <resultMap id="BaseResultMap" type="cn.tj.entity.User" >
      <id column="user_id" property="userId" jdbcType="INTEGER" />
      ...
      <result column="user_type" property="userType" jdbcType="VARCHAR" />
      <result column="user_apply_status" property="userApplyStatus" jdbcType="VARCHAR" />
      <result column="user_train_status" property="userTrainStatus" jdbcType="VARCHAR" />
      <association property="trainClass" column="user_highest_tclass_id" select="cn.tj.mapper.TrainClassMapper.selectByPrimaryKey" />
      <association property="train" column="user_highest_train_id" select="cn.tj.mapper.TrainMapper.selectByPrimaryKey" />
    </resultMap>
    

    这一下子就明白了吧,为什么每次打开这个页面有点慢,就是在mapper的时候,使用了association查询了其他类的sql,所以一下子就慢了。

    解决

    其实我也不想解决啊。但是没办法。肯定不用BaseResultMap,自己写一个mapper,然后将查询结果直接映射到自己的写的dto里面就行了。

  • 相关阅读:
    maven项目编译漏掉src/main/java下的xml配置文件
    读《架构探险——从零开始写Java Web框架》
    使用generator自动生成Mybatis映射配置文件
    git项目添加.gitigore文件
    git-bash下, 启动sshd
    git-bash.exe参数
    少估了一分, 还算不错
    python常用库
    Linux下python pip手动安装笔记
    python学习笔记
  • 原文地址:https://www.cnblogs.com/chenyameng/p/13283647.html
Copyright © 2020-2023  润新知