+
 新版

[Mybatis plus] 关于批量操作的速度

OSC_小邋遢 发布于 2019/07/03 09:29
阅读 15K+
收藏 0

当前是连接的 oracle 数据库,在默认配置下,查询 1000 条数据的速度达到 3 秒。在修改配置 fetch-size 之后查询时间缩短到 0.3 秒左右。

mybatis-plus:
  configuration:
    default-fetch-size: 512

然后发现在调用 saveOrUpdateBatch 方法的时候,使用默认 batchSize=1000,批量操作 1000 条数据的耗时 20 秒到 30 秒,这个时间有点不能容忍了。

 @Transactional(
     rollbackFor = {Exception.class}
 )
 default boolean saveOrUpdateBatch(Collection<T> entityList) {
     return this.saveOrUpdateBatch(entityList, 1000);
 }

希望大佬告知 saveOrUpdateBatch 方法如何提升操作速度。

加载中
0
tianxia007
tianxia007

同问! saveBatch()也是一样,很慢

maisel
maisel
你好,我问一下我用mp操作Oracle数据库,使用saveBatch()批量插入的时候会报错:Caused by: java.sql.SQLException: 违反协议: [0];操作mysql数据库就可以正常批量插入,这个问题是不是我的Oracle版本的问题?
0
OSC_小邋遢
OSC_小邋遢

测试发现 saveBatch 20 条比 10 条明显快, 但 80 条的耗时差不多是20条的4倍,往后增加批处理的条数,耗时也线性增长。

所以怀疑是 save 的缓存区默认设置太小了

0
YYzd
YYzd

同求 

0
开源大龄码农
开源大龄码农

没感觉多慢额。。。300毫秒左右。

0
Kwum
Kwum

用<foreach>标签批量插入啊

0
十一五三
十一五三

我也遇到了 具体是怎么回事呢 一千多条数据 要20秒

OSC_小邋遢
OSC_小邋遢
如果时查询的话 设置一下 fetch-size 数据量亿级以下 就用给 spring batch 做
0
陌猎
陌猎

JDBC连接URL字符串中需要新增一个参数:rewriteBatchedStatements=true

OSCHINA
登录后可查看更多优质内容
返回顶部
顶部