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>
-1

7个回答

另外,你只插入一张表,为什么要把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,让其一次执行多条插入

1
snailgo556
华华的世界 回复liian2018: oracle是不支持 这种的,mysql才支持
4 个月之前 回复
m0_37986661
liian2018 好的 谢谢你 大佬 这下学到了
10 个月之前 回复

第一次3秒 第二次50s肯定不正常,看一下第一次插入后有没有将其单个关闭,是不是造成io阻塞。
至于在操作期间使用数据库同样的表肯定无法操作 会卡死,因为程序操作的时候为了保持一致性 无法通过客户端操作

1

因为楼主用的是insert all语句,会整张表加锁,数据越多,自然效率越低,成指数递增

1

正因为插入的表没有索引,你取数据、插入都需要全表扫描,而且随着表越来越大,自然耗时越来越多,所以会越来越慢。

0
m0_37986661
liian2018 取数据是从别的表取的 这个表只要插入
10 个月之前 回复

应该是数据库本身问题,你可以尝试用纯粹jdbc进行操作便知

0

因为数据库里面的数据会越来越多的呀,而且建立索引的话,在数据插入时还要构建索引,这个时间消耗是指数型倍增的,建议使用定时任务和读写分离的方式去解决

0

补充一点,insert all语句在插入多张表的时候,效果显著,就比如说,你相同的数据要同时插入到a表和b表则可以
insert all into a ... into b ...,一张表没必要多次into,否则要values干什么?还不如不发明values只有一个value算了

0
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
插入大量数据速度慢的解决方法:批量插入
场景: 项目需要导入案件2200条。其中导入的excel每个行案件的信息上包含大约15个联系方式。那么总的联系方式一共用30000条左右 这里优化之前的速度是16-20分钟之间。太慢了。找了好久优化的方法。最后确定了使用mysql批量插入的方法去进行插入操作 慢的原因及解决思路: 这里慢的原因是针对本项目: 插入方式为程序遍历循环逐条插入。在mysql上检测插入一条的速度在0.0
电脑越来越慢怎么办?
电脑越来越慢怎么办? 为什么新装的系统使用时很流畅,用了一段时间发现越来越慢,特别是一些大型软件感觉会更更慢。 1、因为很多软件安装之后默认会随系统启动,占用了很多资源。 2、安装了很多小工具,虽然看着小但是在占用资源方面是惊人的。 3、软件都会产生临时文件,特别是大型软件,这些临时文件不及时清理时间长了也会影响电脑性能。 ...
java下的mysql数据库插入越插越慢的问题解决(百万数据量级别)
最近的项目需要导入大量的数据,插入的过程中还需要边查询边插入。插入的数据量在100w左右。 一开始觉得100w的数据量不大,于是就插啊插,吃了个饭,回来一看,在插入了50多w条数据后,每秒就只能插10条了。。觉得很奇怪,为啥越插越慢呢? 于是就开始分析插入的时间损耗,想到了如下的解决方案:(mysql使用的INNODB引擎) 1.分析是否是由主码,外码,索引造成的插入效率降低 主码:由于主
Mysql插入大量数据速度慢的解决方法:批量插入
转自:https://blog.csdn.net/Alice_qixin/article/details/78522700 场景: 项目需要导入案件2200条。其中导入的excel每个行案件的信息上包含大约15个联系方式。那么总的联系方式一共用30000条左右 这里优化之前的速度是16-20分钟之间。太慢了。找了好久优化的方法。最后确定了使用mysql批量插入的方法去进行插入操作 慢的原因及...
MySQL简单INSERT超慢原因排查
 导 读作者:高鹏(重庆八怪)原文地址:https://www.jianshu.com/p/5248ca67eac2这个问题是来自一位朋友@春波,我通过pstack最终确...
sql优化-分页查询效率慢的问题分析及处理
绑定参数的sql优化。避免sql层面进行参数运算。
记一次平均响应时间越来越慢的调优过程
1. 现象 最近做的性能测试中,有一支交易随着压测时间的增加,响应时间越来越慢,TPS越来越低 。压测十二个小时之后的效果平均响应时间和TPS如下图: 整个场景是要录入一个贷款的客户信息,使用50用户并发压测12小时以上;其中输入完客户信息后,点击保存按钮这个操作,随着压测的进行,响应时间越来越慢。并且停止压测后,过一段时间,即使使用一个用户进行同样的操作,响应时间还是在压测之后的基础上,并不...
(百万数据量级别)java下的mysql数据库插入越插越慢的问题解决
http://blog.csdn.net/qq547276542/article/details/75097602 最近的项目需要导入大量的数据,插入的过程中还需要边查询边插入。插入的数据量在100w左右。一开始觉得100w的数据量不大,于是就插啊插,吃了个饭,回来一看,在插入了50多w条数据后,每秒就只能插10条了。。觉得很奇怪,为啥越插越慢呢?  于是就开始分析插
mysql 使用java 程序 批量插入 很慢
以下内容摘自mysql中文文档: 7.2.16. INSERT语句的速度 插入一个记录需要的时间由下列因素组成,其中的数字表示大约比例: 连接:(3)  发送查询给服务器:(2)  分析查询:(2)  插入记录:(1x记录大小)  插入索引:(1x索引)  关闭:(1)  这不考虑打开表的初始开销,每个并发运行的查询打开。 表的大小以logN (B树)的速度减慢索引的插
Matlab长时间运行越来越慢的问题
Matlab长时间运行越来越慢的问题经常用matlab进行计算的人大概都有这种感觉:在程序刚开始运行时速度很快,但是跑着跑着就变慢了而且是越来越慢。 实际我觉得这个问题和CPU没有关系,主要和内存有关系。具体问题的根源也不清楚。不过这里有两个建议可以减缓这种问题: 将程序分解成多次运行,尽量避免一次运行过长时间 单次大内存消耗的matlab程序运行完将其关闭,下次运行时从新开启 多次大内存消耗的m
keras的get_value运行越来越慢的问题解决
keras 深度学习框架中get_value函数运行越来越慢,内存消耗越来越大问题 1. 问题描述 如上图所示,经过时间和内存消耗跟踪测试,发现是keras.backend.get_value() 函数导致的程序越来越慢,而且严重的造成内存泄露; 查看该函数内部实现,发现一个主要核心是x.eval(session=get_session()),该语句可能是导致内存泄露和运行慢的核心语...
用一个案例讲解应用程序越来越慢的原因
=============================来源:赛迪作者:Ellis发布时间:2008.04.30 05:07 网址:http://tech.ccidnet.com/art/19213/20080429/1435543_1.html============================= 这篇论坛文章(赛迪网技术社区)主要介绍了一个导致应用程序越来越慢
python程序越跑越慢
第一篇博客,记录我第一个python程序中遇到的问题
MySQL存储过程插入数据过慢处理方法
在使用存储过程进行千万条数据的插入的时候,插入效率在每分钟七千条左右,这样算下来,需要几十个小时,所以找了一下优化的方法,除了对存储过程本身的优化,还有就是修改了MySQL的配置文件的部分参数 我做了以下几个参数的修改 innodb_log_file_size = 1024M   日志组中的每个日志文件的大小,设置较大的值可以减少脏数据刷新到磁盘的次数 innodb_log_buffer_s...
为啥Android总会越用越慢?
根据第三方的调研数据显示,有77%的Android手机用户承认自己曾遭遇过手机变慢的影响,百度搜索“Android+卡慢”,也有超过460万条结果。在业内,Android手机一直有着“越用越慢”的口碑,这个现象甚至超出了硬件范畴——很多中高端Android手机在硬件参数上都优于同一代iPhone,但是它们仍然会在使用半年到一年的时间后进入“欠流畅”的状态——这无疑是一件令人困扰的事情。
java程序运行慢解决思路
1、TODOhttps://segmentfault.com/q/1010000007603766
【matlab】运行 越算越慢
http://www.ilovematlab.cn/thread-207245-1-1.html 问题 我用matlab做了一个优化的程序,调用comsol来进行计算,但是运行时间较长,我用实验室的服务器进行计算,但是一晚过后matlab的计算速度渐渐变慢,最后竟然停止了运算,请问各位大侠,这是个怎么个问题啊? 方案 好长时间没有上论坛了,刚看见你的回复,去年参加了研讨
Linux系统变慢原因?
系统变慢是综合性的,有多方面因素所导致的, 1 top:查看linux整机的性能,查看右上角load average,三个值分别是1分钟,5分钟,15分钟的系统负载值,如果3值相加除以3大于60%,负担吃紧,大于80%,建议添加机器。Cpu(s) 5%是CPU空闲率,越高越好。 2 uptime:     18:33:34 up 17 days, 19:13,  1 user,  load a
关于tensorflow在训练或者测试时越来越慢,重启之后又恢复
问题描述: Tensorflow 训练时运行越来越慢,重启后又变好。用的是Tensorflow-GPU 1.2版本,在GPU上跑,大概就是才开始训练的时候每个batch的时间很低,然后随着训练的推进,每个batch的耗时越来越长,但是当我重启后,又一切正常了? 问题解决: 因为在运行时的session里定义了tf的op导致的。这样每一次迭代都会在graph里增加新的节点,导致memory l...
rac insert速度十分缓慢,索引维护浪费大量时间,如何优化?
rac insert速度十分缓慢,索引维护浪费大量时间,如何优化? http://www.itpub.net/423541.html
希捷1T移动硬盘复制文件速度越来越慢
我用的是希捷1T移动硬盘,正品。复制大量文件时,会出现:刚开始速度很快,可以达到70多M/s,可以是紧提前速度越来越慢,下降到20M/s时基本稳定。记得也有一次竟然下降到了6M/s,简直不可思议。据说这是Win7系统的通病,解决办法如下:       控制面板-程序-程序和功能-打开或关闭windows功能-把最后一项“远程差分压缩”前的对勾去掉,重启电脑。
scrapy爬取速度变慢
最近在爬boss直聘,  爬取速度越来越慢, 目前排除了 下载器(一直都很满), 并发请求数(256),     留下个帖子,解答了再来补全
scrapy运行越来越慢的问题 大神们帮我看下是什么原因,怎么优化求各位大神给一些建议
# -*- coding: utf-8 -*- import scrapy import json from pymysql import * from Kuaibao_json.items import KuaibaoJsonItem class KuaibaoSpider(scrapy.Spider): conn = connect(host=&quot;10.16.0.116&quot;, ...
Python慢的重要原因
前言Python一种动态类型,解释性的语言,对于很多开发者来说,Python运行慢是众所周知的事情,其万物皆对象的特性,就是导致其运行慢的一个原因,这篇文章就是想聊聊这里面的一些细节。慢的原因由于各种原因,Python比Fortran和C语言慢。动态类型Pythn是动态类型而不是静态类型的,这意味着,在程序执行时,解释器并不知道变量的类型。下图可以用来说明C变量和Python变量的区别对C语言来说...
redis 写入数据 越来越慢 是什么原因
redis并不会因为key的增加而导致写入明显变慢,肯定是其他因素。如果redis开启了持久化,在进行持久化时,性能必然下降,可以使用config命令查看持久化设置了没有。另外考虑是否是内存不足,一般redis最多只应该占用60%的物理内存,如果超过了在rdb进行持久化时可能会内存不足。可以监视内存和cpu使用情况进行分析。...
Tensorflow训练渐渐变慢,迭代一段时间卡死
经常会遇见在训练过程中,运行越来越慢直至系统卡死,强制重启后重新训练又恢复。 知乎讨论:https://www.zhihu.com/question/58577743 Stackoverflow讨论: Stackoverflow 讨论 https://stackoverflow.com/questions/39070708/why-sometimes-tensorflow-runs-slow
git版本库中python程序大量I/O操作越跑越慢的问题
最近做有关图像的实验,涉及到大量的图像生成和写入操作 过程中发现程序越跑越慢,每个单位操作时间几乎等差增长,14s,20s,25,30。。。。。跑到一半单位操作已经超过200s,受不了了 百度之,发现python的GC有可能耽误程序运行时间,按照相应教程 gc.disable  gc.enable,并没有用 百思不得其姐, 打开资源管理器,发现git正在消耗大量的CPU,突然发现:程序运行
tensorflow如何解决越运行越慢的问题
这几天写tensorflow的时候发现随着迭代的次数越来越多,tensorflow跑的速度越来越慢。查找才发现是tensorflow不断的给之前的图里加节点,导致占用的内存越来越大,然后我尝试了网上的各种方法,终于发现了一个靠谱的方法,先放上代码 tf.reset_default_graph() graph = tf.Graph() with graph....
关于Tensorflow 训练时越来越慢,重启又好了
用的是Tensorflow 1.2版本,在CPU上跑,大概就是才开始训练的时候每个batch的时间很低,然后随着训练的推进,每个batch的耗时越来越长,但是当我重启后,又一切正常了,不知道这个是什么问题? tensorflow 运行时间越长速度越慢问题
解决oracle创建表或插入数据执行速度很慢的问题
由于需要创建的表或创建的数据量很大,若使用SQL window执行语句会导致oracle执行的速度很慢可使用command window执行语句,将要执行的语句copy到页面之后就会一行一行的速度执行...
神经网络会越训越慢吗?(待续)
利用caffe进行网络训练时,出现了一个奇怪的问题,刚开始进行训练时,速度还比较快,但随着训练的进行,速度会逐渐慢下来,大概能慢一倍左右。并且把模型保存下来后,再加载模型进行finetune,也是一样的,速度还是会变慢,这个问题还未解决。猜想可能是随着训练的进行,对于损失函数的计算更耗时了?不了解具体原因是啥呢?...
ibatis、oracle调用insert all into语句报错,ORA-01745: 无效的主机/绑定变量名
背景:今天修改一个同步数据的代码(从数据A中aa表获取数据,插入到数据B中bb表),首先从aa表中查询出所有数据,放在List中,调用insert all into 语句将aa表中的数据批量插入到bb表中,结果一直报错: [PORTAL] INFO  - 2017-02-27 15:27:35,945 - org.springframework.beans.factory.xml.XmlBean
mybatis 执行insert语句总是报错,ORA-00911 无效字符错误解决方法
这个错误是由于sql语句有问题,检查sql的时候没有看出什么问题,结果拿到pl/sql中执行没发现问题。查找资料后发现在库里查询时,查询语句结尾带了一个分号,库里面是支持这个分号的,但到mybatis 里面是不支持这个分号的,所以这点大家以后也应该注意下。       解决方法就是吧分号去掉就好了。
mongodb数据插入慢
Spring.xml配置文件中 将 write-fsync=&quot; true&quot;/&gt; 修改为 write-fsync=&quot;false&quot;/&gt; 即可. 测试发现.true时,插入需要45毫秒左右.改为false.只需3,4毫秒.差距还是比较大的....
Python处理大数据越来越慢的问题
Python处理大数据越来越慢的问题          Python在对大数据进行处理时,发现随着数据处理量的增大,性能急剧下降。查找原因发现是由于GC(垃圾回收)造成的性能下降。          Python的垃圾回收机制的工作原理为每个对象维护一个引用计数,每次内存对象的创建与销毁都必须修改引用计数,从而在大量的对象创建时,需要大量的执行修改引用计数操作,对于程序执行过程中,
MyBatis+MySql Insert操作失败解决办法
[转]MyBatis+MySql Insert操作失败解决办法 2013-5-21阅读238 评论0 初次接触MyBatis,遇到数据库使用MySql时Insert失败的问题(select时正常)。在日志中复制SQL语句是可以执行的,不知道什么原因,怀疑是事务问题。 google后看到一哥们也遇到了此问题,不过他找到了一个解决办法,下面是他原话(他的症状和我遇到的一样,不过我
Oracle数据库为什么变慢了?
本文出自《网管员世界》20002年第8期“故障诊断”栏目硬件环境: SUN250服务器,1G CPU , 512M Ram , 18G SCSI硬盘系统环境: SUN Solaris 2.7服务环境: Oracle 8.1.6周五我发现Oracle数据库在执行程序时的响应特别慢,整个数据库服务所在的SUN Solaris 2.7系统也是这样,无论运行什么程序都比往常慢了好几倍,有的程序甚至
JDBC批处理使用起来要小心
看下面的方法 [code=&quot;java&quot;]Connection conn = getConnection(); PreparedStatement ps = null; try { conn.setAutoCommit(false); ps = conn.prepareStatement(&quot;insert into t_user(username, password) v...
tensorflow 多个模型测试阶段速度越来越慢问题的解决方法
0. 写作目的 好记性不如烂笔头。 1. 问题描述 tensorflow中多个模型在测试阶段,出现测试速度越来越慢的情况,通过查阅资料发现,由于tensorflow的图是静态图,但是如果直接加在不同的图(即不同的模型),应该都会存在内存中,因此造成了测试速度越来越慢,甚至导致机器卡顿(博主在测试100个模型时,一般测试20个模型左右出现卡顿),因此有必要探究更快的测试速度方法。 2. 方法...
tomcat加载启动越来越慢怎么解决?
可以修改类不用重启Tomcat加载整个项目(手工启动) 配置reloadable=true(自动重载) 使用Debug模式,前提是仅限于局部修改。(修改类不用重启–热加载) Tomcat轻小,而WebLogic、WebSphere对硬件要求比较高,吃内存、耗CUP。JBoss类更改不会重启(传说,我没用过,不知道!)。 在使用Eclipse+Tomcat开发Java项目的时候
文章热词 机器学习教程 Objective-C培训 交互设计视频教程 颜色模型 设计制作学习
相关热词 mysql关联查询两次本表 native底部 react extjs glyph 图标 python菜鸟教程all nlp执行师课程是什么