【问题标题】:Improve the performance of Spring boot JpaRepostiory on Save提高 Spring boot JpaRepostiory on Save 的性能
【发布时间】:2018-08-16 08:41:16
【问题描述】:

我正在从第三方 API 获取数据,然后我想将这些记录插入 Oracle 数据库。这将每小时发生一次。有时 API 会在一小时内返回超过 50,000 条记录。所以那个时候,插入记录需要很多时间(绝对记录大小太大)。但我想知道有没有其他方法可以提高插入查询的性能。

以下是我用于插入记录的代码:

List<ClassName> retrievedList=util.getResultFromApi(); //The function getResultFromApi may returns more than 50,000 records.

userInfoRepository.save(retrievedList);

UserInfoRepository 是我的 JpaRepository。谁能帮我提些建议。

【问题讨论】:

  • 您确定要改进JpaRepository 而不是database 本身吗?
  • 你为什么不直接使用原始 sql ?
  • 是的,我想改进 JpaRepository,有没有像 Chunk @Pijotrek 这样的选项
  • 不行,查询是动态生成的,我们的项目也不允许使用raw sql

标签: java spring-boot spring-data-jpa repository


【解决方案1】:

您可以通过在插入一定次数后调用flush()clear() 来加快速度。

int i = 0;
for(ClassName className: classNames) {
    dao.save(className);
    if(++i % 20 == 0) {
        dao.flushAndClear();
    }

}

【讨论】:

    【解决方案2】:

    也许关系数据库不是最好的方法。如果您要更加努力地写入数据库。可能 Mongo 可能是一个更好的选择。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-07-13
      • 2014-09-23
      • 2011-09-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-10-17
      • 1970-01-01
      相关资源
      最近更新 更多