Как улучшить производительность данных JPA весной - PullRequest
0 голосов
/ 02 июля 2018

Я пытаюсь улучшить производительность своего приложения, в котором одной из операций является чтение данных из файла CSV и сохранение значений из каждой строки как одного POJO (так 1500 строк CSV = 1500 POJO) в базе данных PostgresSQL , Это приложение с загрузочной пружиной, использующее JpaRepository с (конфигурациями по умолчанию) в качестве средства сохранения. Моей первоначальной попыткой было в основном это утверждение в каждой итерации цикла, когда он читал каждую строку в файле CSV:

autowiredRepoInstance.save(objectInstance);

Однако с настройкой spring.jpa.show-sql=true в файле application.properties я увидел, что для каждого POJO выполняется одна вставка. Моя попытка улучшить производительность состояла в том, чтобы объявить ArrayList вне цикла, сохранить каждый экземпляр POJO в этом списке в цикле и при каждом 500-м элементе выполнить сохранение, как показано ниже (на данный момент игнорируются случаи, когда есть больше / меньше, чем кратно 500):

loop(
objList.add(objectInstance);


    if (objList.size() == 500) {
                autowiredRepoInstance.save(objList);
                    objList.clear();
      }
  )

Однако это также генерировало отдельные операторы вставки. Какие настройки я могу изменить, чтобы улучшить производительность? В частности, я хотел бы свести к минимуму количество SQL-операторов / операций, и чтобы в Hibernate использовались «многострочные» вставки, которые позволяет postgresql:

https://www.postgresql.org/docs/9.6/static/sql-insert.html

Но любые другие предложения также приветствуются.

Спасибо.

...