美文网首页
在spring(spring boot)中开启Mysql批处理b

在spring(spring boot)中开启Mysql批处理b

作者: Mr__YongJ | 来源:发表于2019-10-25 01:36 被阅读0次

    最近在项目开发中,涉及到批量新增业务,使用到JPA,但是其saveAll性能着实达不到要求,甚至慢的变态(可能是配置没配置好的原因),最后使用了 JdbcTemplate的批处理,性能还是非常不错。

    batchHasPlainStatements介绍,参考以下大佬的文章,我这就不赘述了。
    https://www.jianshu.com/p/04d3d235cb9f

    注:测试 批量新增 1000条数据
    JPA saveAll 耗时30秒
    JdbcTemplate的批处理(batchHasPlainStatements不设置,默认为false) 耗时30秒
    JdbcTemplate的批处理(batchHasPlainStatements=true) 耗时200毫秒
    也许差距不是那么大,跟各自的测试数据与机子本身也是有关的。

    这里要说的是
    关于 batchHasPlainStatements 的配置

    spring:
      datasource:
        username: xxxx
        password: xxxx
        url: jdbc:mysql://xxxx:3306/xxx?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true
        driver-class-name: com.mysql.cj.jdbc.Driver
    

    网上大部分都是 在mysql url后面 跟上 &rewriteBatchedStatements=true,
    由于种种原因,我的连接方式可能不是这种url配置方式了,但是必须配置 rewriteBatchedStatements 才能提高批处理性能。
    所以可以使用以下方式去配置

    spring:
        datasource:
        hikari:
          data-source-properties: 
            rewriteBatchedStatements: true
    

    通过测试是ok的,因为在 我这个版本的spring boot选用的 连接池是 hikari 所以支持该配置。
    如果使用的是 其他的 设置对应的 应该也是ok的,虽然我还没试。

    相关文章

      网友评论

          本文标题:在spring(spring boot)中开启Mysql批处理b

          本文链接:https://www.haomeiwen.com/subject/xapjvctx.html