mybatis框架foreach循环批量插入10000数据,特别慢原因?

bellus- 2016-11-21 05:14:28
开发环境 win7 + tomcat7 + mysql5.5 开发技术 SpringMVC + spring + mybatis

疑问:mybatis使用forRach批量插入数据,一次性多少个为最佳性能!service中开启事务。
本人创建一个 10000个 User用户的List<User> ,传递给mabatis,mybatis的xml中使用forEach拼接sql语句为一句。

<insert id="addUsers" parameterType="java.util.List">
INSERT INTO
user (<include refid="Base_Column_List" />)
VALUES
<foreach item="ac" collection="list"
open="(" separator="),(" close=")">
#{ac.id},
#{ac.scode},
#{ac.password},
#{ac.smid},
#{ac.addTimes},
#{ac.flag},
#{ac.endTime}
</foreach>
</insert>
但是本人使用这条语句,使用mybatis框架插入10000条数据,大约15分钟才插入完成。及时1000条数据 也需要大约40s时间。不知道是那里问题。
本人想知道 mybatis一般可以批量插入多少数据是比较优势的。
...全文
16699 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
最闲程序员 2019-10-18
  • 打赏
  • 举报
回复
加上事务@Transactional,插入明显快起来 楼主给分不
noodv 2017-03-20
  • 打赏
  • 举报
回复
大哥,你一次插入那么多数据,并且在那没commit,你想它怎么快的起来??? 将插入的数据分批插入,500一次,你试试,不快找我。微信SeeSnow1990
LIFe.LONG 2017-02-22
  • 打赏
  • 举报
回复
哥 问题解决了 吗 ? 我也遇到这样的问题了 求指导呀。
zsmj_820_09 2016-12-22
  • 打赏
  • 举报
回复
楼上说的对,不是每次都commit,应该不会太低,再检查下你数据库的连接池,不行配大点
魔都 2016-12-03
  • 打赏
  • 举报
回复
确认是在service 层加了事物吧,不然会一条一条insert 到数据库 你先测试一下在数据库中插入1000条多少时间 影响的性能点会特别的多,只能一点点试。比如是不是数据库这个插入的表 索引特别多,也会影响效率.
X元素 2016-12-02
  • 打赏
  • 举报
回复
mybatis的批量插入我没写过,不过楼主只要别大量commit 性能应该不低。
此生不碍你 2016-11-28
  • 打赏
  • 举报
回复
怎么处理session缓存?一下子插入那么多 不会session缓存出问题吗
xuan.ye 2016-11-26
  • 打赏
  • 举报
回复
这种情况,还是用 jdbc原生批量插入语句处理 。
qq524063789 2016-11-25
  • 打赏
  • 举报
回复
这个不仅仅跟mybatis有关系 ,最重要的事数据的性能,网络都有关系,你可以试一下每次插2000条
bellus- 2016-11-23
  • 打赏
  • 举报
回复
来大神 回答一下

25,985

社区成员

发帖
与我相关
我的任务
社区描述
高性能WEB开发
社区管理员
  • 高性能WEB开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧