Проблема пропускной способности Hibernate: отнимает намного больше времени, чем SQL Developer - PullRequest
0 голосов
/ 07 мая 2019

Я испытываю странные проблемы с Hibernate. Я выполняю простой запрос, который возвращает около 300 000 результатов

выберите COLUMN_A, COLUMN_B, COLUMN_C, COLUMN_D, COLUMN_E, COLUMN_F от MY_TABLE где COLUMN_G = 'Отчетность';

На разработку SQL уходит около 1 минуты. Но в Hibernate это занимает 4 минуты.

    String queryString = "select COLUMN_A, COLUMN_B, COLUMN_C, COLUMN_D, COLUMN_E, COLUMN_F from MY_TABLE where COLUMN_G = 'Reporting'";
    Query query = entityManager.createNativeQuery(queryString, Reporting.class);
    List<ReportingScore> result = query.getResultList();

Я не думаю, что причиной проблемы являются издержки Hibernate при создании объектов.

Я заметил, посмотрев в диспетчер задач Windows, когда SQL Developer выполняет запрос, пропускная способность в среднем составляет 1,1 Мбит / с

Но когда Hibernate выполняет тот же запрос, он получает ответ со скоростью 300 Кбит / с (на 1/3 медленнее).

enter image description here

Кто-нибудь знает, почему передача данных в спящем режиме медленнее, чем в этом случае медленнее, чем в SQL Developer? Есть ли способ настроить способ управления пропускной способностью в спящем режиме? (я никогда ничего об этом не слышал)

Мое приложение является приложением с загрузочной пружиной версии 2.1.1.RELEASE.

Большое спасибо

1 Ответ

0 голосов
/ 08 мая 2019

Я столкнулся с точно такой же проблемой с медлительностью Hibernate при компиляции приложения в виде jar-файлов в jar и последующем запуске с JRE8.Решение заключалось в том, чтобы иметь библиотеки hibernate с расширенными классами внутри конечного jar (или jar зависимостей в стороне от каталога lib)

Начиная с JRE8 jar в jar добавляет чрезвычайную медлительность в выполнение запросов hibernate.

РЕДАКТИРОВАТЬ: В моем случае это была не проблема весенней загрузки или гибернации, а то, как JRE8 обрабатывает дефлятирование почтового индекса, после компиляции maven со следующим плагином установка производительности значительно улучшилась

...
        <build>

           <plugins>
              <plugin>
                <artifactId>maven-assembly-plugin</artifactId>
                <executions>
                  <execution>
                    <phase>package</phase>
                    <goals>
                      <goal>single</goal>
                    </goals>
                  </execution>
                </executions>
                <configuration>
                  <archive>
                    <manifest>
                      <addClasspath>true</addClasspath>
                      <mainClass>myapp.mainclass</mainClass>
                    </manifest>
                  </archive>
                  <descriptorRefs>
                    <descriptorRef>jar-with-dependencies</descriptorRef>
                  </descriptorRefs>
                </configuration>
              </plugin> 
...
           </plugins>
        </build>
...
...