liian2018 2018-08-22 01:50 采纳率: 50%
浏览 3948
已采纳

Mybatis执行insert all 的时候 越来越慢是什么原因

情况描述:
数据库是Oracle
每次从表里取出10000条数据 进行计算 结果大概500~1000条 然后把这几百条数据批量插入数据库中 插入的表没有索引 就是很简单的几个字段
第一次执行 大概3S左右就插入成功了 第二次执行一下要50S左右 再往下越来越长。。不知道什么原因 有大佬遇到过吗
还有就是 当这个insert all变慢之后 对数据库进行 ddl操作都会卡死。。。而dml没有影响~
java这边数据库连接池用的druid

这是第一次
这是第二次
sql如下

 <insert id="batchInsertArriveInfo" parameterType="java.util.List" useGeneratedKeys="false">
    insert all
    <foreach collection="list" item="info" index="index">
      into
      T_ARRIVAL_STATION_INFORMATION
      (BUS_PATH_ID,STATION_SN,TASK_STATUS,ARR_TIME,BUS_PATH_NAME,RUN_FLAG,VEHICLE_ID,station_name,station_id)
      values
      (
      #{info.busPathId},#{info.stationSn},#{info.taskStatus},
      #{info.arrTime},#{info.busPathName},#{info.runFlag},
      #{info.vehicleId},#{info.stationName},#{info.stationId}
      )
    </foreach>
    select 1 from dual
  </insert>
  • 写回答

8条回答 默认 最新

  • zhangpan_soft 2018-08-22 09:02
    关注

    另外,你只插入一张表,为什么要把into 放在循环里面?这相当于,每执行一次插入都开启一个io,你有多少资源可以开启?改为

    
    <insert id="batchInsertArriveInfo" parameterType="java.util.List" useGeneratedKeys="false">
        insert all
    
          into
          T_ARRIVAL_STATION_INFORMATION
          (BUS_PATH_ID,STATION_SN,TASK_STATUS,ARR_TIME,BUS_PATH_NAME,RUN_FLAG,VEHICLE_ID,station_name,station_id)
          values
                <foreach collection="list" item="info" index="index" separator=",">
          (
          #{info.busPathId},#{info.stationSn},#{info.taskStatus},
          #{info.arrTime},#{info.busPathName},#{info.runFlag},
          #{info.vehicleId},#{info.stationName},#{info.stationId}
          )
        </foreach>
        select 1 from dual
      </insert>
    
    

    改为上述,只打开一个io,让其一次执行多条插入

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(7条)

报告相同问题?

悬赏问题

  • ¥15 运筹学中在线排序的时间在线排序的在线LPT算法
  • ¥30 求一段fortran代码用IVF编译运行的结果
  • ¥15 深度学习根据CNN网络模型,搭建BP模型并训练MNIST数据集
  • ¥15 lammps拉伸应力应变曲线分析
  • ¥15 C++ 头文件/宏冲突问题解决
  • ¥15 用comsol模拟大气湍流通过底部加热(温度不同)的腔体
  • ¥50 安卓adb backup备份子用户应用数据失败
  • ¥20 有人能用聚类分析帮我分析一下文本内容嘛
  • ¥15 请问Lammps做复合材料拉伸模拟,应力应变曲线问题
  • ¥30 python代码,帮调试,帮帮忙吧