Oracle JDBC Optimization : Spring boot Application에서 Prepared Statement 캐싱 활성화
Oracle 데이터베이스에 연결된 Spring Boot REST 애플리케이션이 있습니다.JDBCTemplate를 사용하고 있습니다.Oracle 데이터베이스 속성은 다음 세 가지 application.properties 설정을 통해 얻을 수 있습니다.
spring.datasource.url
spring.datasource.username
spring.datasource.password
이 애플리케이션은 HikariCP를 사용하고 있습니다.HikariCP 웹사이트에서 JDBC 드라이버가 가장 잘 설정되어 있기 때문에 이 풀은 PreparedStatement를 캐시하지 않는다는 것을 알게 되었습니다.
다음 사항을 보장하기 위해 어디에 무엇을 지정해야 합니까?
Oracle JDBC Driver(ojdbc7.jar)가 준비된 문을 캐시합니다.캐시할 수 있는 준비된 문의 수를 사용자 정의할 수 있는 방법이 있습니까?
https://howtodoinjava.com/java/jdbc/best-practices-to-improve-jdbc-performance/, 에서 확인할 수 있습니다.
데이터베이스가 최대 패킷 크기로 설정되어 있고 드라이버가 해당 패킷 크기와 일치하는지 확인합니다.더 큰 결과 집합을 가져올 경우 드라이버와 서버 간에 주고 받는 총 패킷 수가 줄어듭니다.
위의 내용에 따라 필요한 단계는 무엇입니까?
- 오라클 DB 서버 패킷 크기 찾기
- 오라클 DB 서버가 최대 패킷 크기로 설정되어 있는지 확인
- find set Oracle JDBC 드라이버(ojdbc8.jar) 패킷 크기를 설정합니다.
기타 (Oracle) JDBC 성능 최적화 팁을 주시면 감사하겠습니다.
안녕 Enable Prepared 문 캐싱 기능은 Spring이나 REST와 아무 관련이 없습니다.이 기능은 데이터 소스, JDBC 드라이버 및 데이터베이스 간의 협상 문제입니다.설정 방법을 알아보려면 드라이버, 데이터 소스 및 데이터베이스에 대한 관련 설명서를 읽으십시오.
Hikari의 경우 올바른 방법은 다음과 같습니다(참고: datasource2, 자동 구성이 가능하도록 datasource로 이름 변경).
spring:
datasource2:
dataSourceClassName: com.zaxxer.hikari.HikariDatasource
.....
......
configuration:
maximumPoolSize: 25
data-source-properties:
ImplicitCachingEnabled: true
MaxStatements: 100
구성 내부의 속성은 기본 드라이버로 바로 전달됩니다.
@Bean
@ConfigurationProperties("spring.datasource2")
public DataSourceProperties dataSourceProperties2() {
return new DataSourceProperties();
}
@Bean()
@ConfigurationProperties("spring.datasource2.configuration")
public DataSource hikariDatasource() {
return dataSourceProperties2().initializeDataSourceBuilder().build();
}
이 예에서는 기본 데이터 소스의 수동 초기화를 사용합니다.
먼저 문서를 확인하여 다음 작업을 수행할 수 있는지 확인합니다.ojdbc8.jar
데이터베이스 서버 버전과 일치합니다.의 다른 버전이 있습니다.ojdbc8.jar
11g, 11gR2, 12의에 대하여.
이 답변에 따르면, 당신은 다음이 필요합니다.oracle.jdbc.implicitStatementCacheSize
JDBC 드라이버에 설정할 속성입니다.이 문서에서는 JDBC 드라이버 속성에 대해 몇 가지 더 언급합니다.oracle.jdbc.freeMemoryOnEnterImplicitCache
아니면oracle.jdbc.maxCachedBufferSize
을 사용할수 . 이러한 속성을 사용할 수 있는지 확인하려면 드라이버 버전에 대한 문서를 확인해야 합니다.
이는 Spring Boot HikariCP 옵션을 사용하여 전달할 수 있습니다.Spring Boot 버전의 문서를 다시 확인합니다. 이 속성의 이름이 한 번 이상 변경되었습니다.
application.jpl
spring:
datasource:
hikari:
data-source-properties:
oracle.jdbc.implicitStatementCacheSize: 100
응용 프로그램.속성
spring.datasource.hikari.data-source-properties.oracle.jdbc.implicitStatementCacheSize: 100
문 가져오기 크기에도 관심이 있을 수 있지만 이 최적화는 일반적으로 각 문에 개별적으로 적용됩니다.
- 다음을 통해 문 캐싱 사용
oracleDataSource.setImplicitCachingEnabled(true)
- 메모리를 가장 잘 활용할 수 있는 적절한 캐시 크기 선택
connection.setStatementCacheSize(10)
사용하는 합니다. 크기는 10장에록도다장본는시는장다는0시y장0본esstted장efroeo
- 문 캐싱을 사용하도록 응용 프로그램을 변경할 수 없는 경우 폴백
session_cached_cursors = 50 Connection.setStatementCacheSize(10)
언급URL : https://stackoverflow.com/questions/58855423/oracle-jdbc-optimization-enable-preparedstatement-caching-in-a-spring-boot-app
'programing' 카테고리의 다른 글
가려진 배경 영역의 밝기에 따라 텍스트 색상을 변경하시겠습니까? (0) | 2023.09.12 |
---|---|
Wordpress query_posts 사용자 지정 필드별 순서 지정 (0) | 2023.09.12 |
스프링 기본값으로 소비 및 생산 (0) | 2023.09.12 |
Oracle 기본 데이터 펌프 디렉토리를 덤프 파일을 가져오도록 변경하는 방법은 무엇입니까? (0) | 2023.09.12 |
MariaDB: Arch Linux에서 OQGRAPH를 DB Engine으로 설치하는 방법 (0) | 2023.09.12 |