Java Spring jdbctemplate批量更新快速替代方案

Java Spring jdbctemplate批量更新快速替代方案,java,mysql,spring,Java,Mysql,Spring,我正试图使用SpringJDBC模板批量更新将大约5000个值插入MySql表,如图所示 据我所知,它在一个事务中插入的行数与我给它的行数相同。但它仍然很慢 我试着提出这样的问题 INSERT INTO CUSTOMER " + "(CUST_ID, NAME, AGE) VALUES (?, ?, ?), (?, ?, ?), (?, ?, ?),(?, ?, ?).... 我已经排了那么多行了。它的执行速度要快得多,但我必须手动生成查询。我想知道在这种情况下,是否有批量更新的替代

我正试图使用SpringJDBC模板批量更新将大约5000个值插入MySql表,如图所示

据我所知,它在一个事务中插入的行数与我给它的行数相同。但它仍然很慢

我试着提出这样的问题

INSERT INTO CUSTOMER " +
    "(CUST_ID, NAME, AGE) VALUES (?, ?, ?), (?, ?, ?), (?, ?, ?),(?, ?, ?)....
我已经排了那么多行了。它的执行速度要快得多,但我必须手动生成查询。我想知道在这种情况下,是否有批量更新的替代方案


P.S.P.S.我知道在构建这样大的查询时,应该考虑最大的包大小,查询的大小不应超过限制(虽然可以在MySQL服务器中配置限制)。
  • 获取连接对象
  • 将连接自动提交属性设置为false。使用
    connection.autocommit(false)
  • 运行insert查询语句
  • 执行
    connection.commit()

  • 您是否尝试过
    preparedStatement.addBatch();preparedStatement.executeBatch()?是的,没有重大影响对于批处理更新的工作,请确保您有支持它的JDBC驱动程序版本(和数据库),如果没有,将执行单个查询而不是批处理。还要确保您有正确的事务设置,并且正在使用事务表。这一点很好!它比形成一个大查询要慢,但结果证明它能将操作加快到一个相当快的速度。谢谢通过正确的事务设置,这是不需要的,因为SpringTX已经做到了这一点。如果这起作用,这主要表明您的设置有问题。查看示例,这是示例的第一个错误,没有正确的事务设置。
    insertBatchSql
    方法应该是事务性的,但事实并非如此,从示例来看,它完全没有事务设置。上述方法有任何缺点吗?它工作起来很有魅力!我以前使用的是
    addBatch()
    insertBatch()
    ,性能非常差。持续时间已从1分钟减少到1秒!。谢谢