Spring Boot:将JPA批量插入性能提高100倍

是否想改善您的插入记录?在本文中,您可以学习如何使用Spring Data JPA将批量插入性能提高100倍。

我遇到了一个问题,我想将数百万条记录插入数据库,而这需要从文件中导入。

因此,我对此进行了一些研究,并希望与您分享我发现的发现,这些发现帮助我将插入记录的吞吐量提高了近100倍。

最初,当我只是尝试使用spring JPA的saveAll方法进行批量插入时,每10,000条记录获得约185秒的性能。在执行以下更改之后,插入10,000条记录的性能仅需4.3秒。

是的,每10k记录4.3秒。

因此,要实现这一点,我必须更改插入数据的方式。

1.插入时更改记录数

最初插入时,我是通过调用saveAll方法直接推送列表中的所有10k记录。我将其更改为30的批处理大小。您也可以将批处理大小增加到甚至60,但是这并不是插入记录所花费的时间的一半。请参阅下表。

为此,您需要设置hibernate属性batch_size=30。

spring.jpa.properties.hibernate.jdbc.batch_size=30
cachePrepStmts=true
useServerPrepStmts=true
rewriteBatchedStatements=t

你可能感兴趣的:(程序员,JVM,java,java,python,mysql,数据库,大数据)