首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >mybaits批处理ExecutorType和for_each Xml的性能比较

mybaits批处理ExecutorType和for_each Xml的性能比较
EN

Stack Overflow用户
提问于 2019-05-08 05:57:35
回答 1查看 499关注 0票数 0

我有一个清单的记录要插入到DB使用我的诱饵。以前,我的代码是这样的:

代码语言:javascript
复制
for(Item item :  items){
    sqlSession.insert("insert", item);
}

使用这种方法是可行的,但我发现在Mysql服务器上存在着动态增量的Mysql,这是由于条目的数量。

由于我很少访问MySql配置,并且希望解决这个高磁盘io问题,我找到了一些可能的解决方案:

  1. 使用ExecutorType.BATCH实现sqlSession
  2. 在单个insert语句中插入多个值,例如:insert into Item values <foreach collection="list" item="item" index="index" separator=","> (#{item.a}, #{item.b}...) </foreach>

有没有人知道哪一个适合解决我的高diskIO问题,这两种解决方案的主要区别是什么?谢谢。

EN

回答 1

Stack Overflow用户

发布于 2019-05-08 11:48:58

虽然很难预测服务器对磁盘I/O的影响,但推荐使用方法1(使用ExecutorType.BATCH)。

它基本上一次插入一定数量的项目。

由于在内部使用JDBC的批处理操作API (它是为处理许多行而设计的),您可以从驱动程序的优化中获益。

备注:

方法2(多行插入)一次执行绑定所有项的单个语句。

可能会导致记忆问题。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56034380

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档