使用Spring数据JPA将数百万个数据插入MySQL数据库

时间:2019-03-13 07:40:29

标签: mysql spring-data-jpa

我们的应用程序基于Java 8,Spring Data JPA和MySQL。我们的应用程序中有两个不同的数据源,我们的任务是从一个数据源中获取数百万个数据(存储在表中的文本),并在进行一些小的计算后插入到不同的数据源中。 当我尝试遍历每条记录并将其插入不同的数据库时,它花费的时间比预期的要长。

是否有任何标准且最快的方法?我需要使用存储过程吗?如果是,那么我将如何在过程中传递实体列表?

1 个答案:

答案 0 :(得分:0)

不要使用JPA。 JPA的主要用例是:加载非平凡的域模型,对其进行处理,然后通过自动检测将其刷新到数据库中。您似乎在用例中不需要。

使用JDBC和批处理插入。 Springs JdbcTemplate will come in handy

选择一个批次,根据需要进行操作,然后将其插入目标。

要调整选择过程,请考虑value based pagination

在编写时,请考虑删除约束和索引,并在此过程之后创建它们。

可能有更多特定于MySQL的选项可用,但我不知道这些选项。

您可能希望将工作分成三个线程池:一个用于读取,一个用于写入,一个用于处理数据。 我不确定,但是Spring Batch可能对此有所帮助。