Отключить все JPA-транзакции в приложении Spring Boot - PullRequest
0 голосов
/ 29 апреля 2019

Я бы хотел отключить все JPA-транзакции в моих сервисах Spring Boot для повышения производительности.Мое приложение обрабатывает много операций с базой данных, и для повышения производительности я хотел бы использовать pgBouncer в моей базе данных PostgreSQL в состоянии пула операторов (https://wiki.postgresql.org/wiki/PgBouncer#Feature_matrix_for_pooling_modes)

Транзакции делают операции с базой данных очень медленными (вероятно, ???).

Есть ли возможность отключить все транзакции JPA?

Мой примерный репозиторий:

public interface AgreementRepository extends JpaRepository<Agreement, Long> {

    List<Agreement> findByClientIdAndProductIdIn(Long clientId, List<Long> productIds);
}

Мой pom:

<dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.postgresql</groupId>
            <artifactId>postgresql</artifactId>
            <version>9.4-1206-jdbc42</version>
        </dependency>
        <dependency>
            <groupId>com.google.guava</groupId>
            <artifactId>guava</artifactId>
            <version>26.0-jre</version>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>

        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-sleuth</artifactId>
            <version>${spring.cloud.starter.zipkin.sleuth}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-zipkin</artifactId>
            <version>${spring.cloud.starter.zipkin.sleuth}</version>
        </dependency>

        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter</artifactId>
            <version>2.1.0.RELEASE</version>
        </dependency>

    </dependencies>

Может быть, я должен изменить значение по умолчаниюУровень изоляции для повышения производительности? Мое приложение выполняет так много операций с базами данных, что весь процесс идет очень медленно.

Заранее спасибо.

1 Ответ

1 голос
/ 29 апреля 2019

Если вы реализуете методы поиска JpaRepository по умолчанию @Transactional(readOnly=true)

Согласно блогу Влада Михалчеа, он является приверженцем Hibernate, это уже оптимизировано для производительности: https://vladmihalcea.com/spring-read-only-transaction-hibernate-optimization/

ИтакЯ предполагаю, что ваша проблема не связана с транзакциями.

...