Я столкнулся со следующей проблемой: у меня есть приложение (архитектура микросервисов), и один сервис отвечает за поиск большого количества данных в очень большой базе данных 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);
}
Мы также используем
И у нас есть 2 источника данных (2 базы данных, одна для выполнения операторов SELECT и одна для выполнения операторов SAVE)