micronaut를 사용한 느린 JPA 실행

3157 단어
나는 hikari pool과 함께 micronaut data jpa를 구현했습니다.
총 실행 시간이 약 400-800ms인 간단한 jpa 선택 쿼리를 실행하려고 합니다.
쿼리 방법은-
list findAllByCodeAndItemIdAndItemClass(String code, String itemId, String itemClass);

위 jpa 쿼리의 실행 메트릭은 다음과 같습니다.14:57:55.820 [default-nioEventLoopGroup-1-5] INFO o.h.e.i.StatisticalLoggingSessionEventListener - Session Metrics {
1373200 nanoseconds spent acquiring 1 JDBC connections;
22600 nanoseconds spent releasing 1 JDBC connections;
89600 nanoseconds spent preparing 1 JDBC statements;
402081800 nanoseconds spent executing 1 JDBC statements;
0 nanoseconds spent executing 0 JDBC batches;
0 nanoseconds spent performing 0 L2C puts;
0 nanoseconds spent performing 0 L2C hits;
0 nanoseconds spent performing 0 L2C misses;
0 nanoseconds spent executing 0 flushes (flushing a total of 0 entities and 0 collections);
3600 nanoseconds spent executing 1 partial-flushes (flushing a total of 0 entities and 0 collections)
}
Result Found: 1
====> Execution Time: 410ms

이 쿼리에 대한 일반 JDBC 호출은 약 70-90ms가 걸리지만 hikari 풀과 함께 micronaut 데이터를 사용하면 실행 시간이 jdbc 실행 시간보다 훨씬 깁니다. Microsoft SQL 서버 데이터베이스를 사용하고 있습니다. 프로젝트에서 사용되는 관련 종속성은 다음과 같습니다.

<parent>
    <groupId>io.micronaut</groupId>
    <artifactId>micronaut-parent</artifactId>
    <version>3.5.2</version>
  </parent>

  <properties>
    <packaging>jar</packaging>
    <jdk.version>17</jdk.version>
    <release.version>17</release.version>
    <micronaut.version>3.5.2</micronaut.version>
    <micronaut.data.version>3.4.2</micronaut.data.version>
    <micronaut.runtime>netty</micronaut.runtime>
    <exec.mainClass>com.data.Application</exec.mainClass>
  </properties>

<dependency>
      <groupId>io.micronaut.data</groupId>
      <artifactId>micronaut-data-hibernate-jpa</artifactId>
      <scope>compile</scope>
    </dependency>
    <dependency>
      <groupId>io.micronaut.sql</groupId>
      <artifactId>micronaut-jdbc-hikari</artifactId>
      <scope>compile</scope>
    </dependency>
    <dependency>
      <groupId>com.microsoft.sqlserver</groupId>
      <artifactId>mssql-jdbc</artifactId>
      <scope>runtime</scope>
    </dependency>


아래는 application.yml의 데이터 소스 구성입니다.

datasources:
  default:
    url: jdbc:sqlserver://xxxxxxxxxxx;databaseName=xxxxxxx;
    username: xxxxxx
    password: xxxxxx
    driverClassName: com.microsoft.sqlserver.jdbc.SQLServerDriver
    dialect: SQL_SERVER

jpa:
  default:
    properties:
      hibernate:
        hbm2ddl:
          auto: none
        generate_statistics: true
        format_sql: true
        show_sql: true



현재 정상적인 jdbc 실행 시간보다 훨씬 더 긴 micronaut 데이터로 더 나은 성능과 실행 시간을 달성하기 위해 어떤 최적화를 수행할 수 있는지 또는 추가 구성을 추가할 수 있는지 제안하십시오.

좋은 웹페이지 즐겨찾기