Spring Boot - @Transaction (readOnly = true) против поиска в спящем режиме - PullRequest
1 голос
/ 08 мая 2019

Я столкнулся со следующей проблемой: у меня есть приложение (архитектура микросервисов), и один сервис отвечает за поиск большого количества данных в очень большой базе данных postgresql.В этом сервисе много «поисковиков», и каждый из них извлекает данные из большой базы данных.Там выполняется действительно огромное количество операторов SELECT, и это занимает очень много времени (я использую Spring Boot, Hibernate).

Вопрос в том, как повысить производительность?

  • setтранзакции с флагом readOnly = true @Transaction (readOnly = true)
  • или, возможно, использовать Hibernate Search: http://hibernate.org/search/
  • отключить все транзакции?(отключение транзакций с помощью операторов SELECT может значительно повысить производительность?)
  • или, может быть, что-то еще?

Что вы могли бы предложить?Я слышал мнения, что в моем случае Hibernate Search может значительно повысить производительность

или, может быть, что-то еще?

Мой стек: Spring Boot:

    <parent>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-parent</artifactId>
            <version>2.1.2.RELEASE</version>
            <relativePath/> <!-- lookup parent from repository -->
        </parent>
<dependency>
            <groupId>org.postgresql</groupId>
            <artifactId>postgresql</artifactId>
            <version>9.4-1206-jdbc42</version>
        </dependency>

Мы используем много таких JPAR-хранилищ, как этот:

@Repository
public interface MyRepository extends JpaRepository<MyEntity, Long> {
    Set<MyEntity> findByIdProductInAndIdClient(List<Long> productsIds, Long idClient);
}

Мы также используем

  • @ NamedQueries

И у нас есть 2 источника данных (2 базы данных, одна для выполнения операторов SELECT и одна для выполнения операторов SAVE)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...