본문 바로가기

JAVA

HikariCP Oracle 데이터베이스와의 커넥션 유효성을 검사 성능 최적화!!

728x90
반응형

oracle.jdbc.defaultConnectionValidation 설정은 HikariCP (JDBC 커넥션 풀링 라이브러리)에서 Oracle 데이터베이스와의 커넥션 유효성을 검사할 때 사용하는 설정 입니다. 기본적으로, HikariCP는 커넥션 풀에 있는 커넥션이 여전히 유효한지 확인하기 위해 여러 방법을 제공합니다.

 

  • SOCKET: 소켓을 통해 연결 상태를 검사합니다.
  • FAST: 기본적인 유효성 검사로, 연결이 유효한지 간단히 확인합니다.
  • METADATA: 메타데이터를 사용하여 연결을 검사합니다.
  • TABLE: 특정 테이블에 대해 간단한 쿼리를 실행하여 연결을 검사합니다.

설정 방법

구분 내용
SOCKET 위에서 설명한 것처럼, SOCKET은 소켓을 통해 연결 상태를 검사합니다. 이는 네트워크 레벨에서 연결이 유효한지 빠르게 확인할 수 있는 방법입니다.


spring.datasource.hikari.data-source-properties.oracle.jdbc.defaultConnectionValidation=SOCKET
FAST FAST는 기본적인 유효성 검사로, 빠르게 연결을 검사합니다. 이는 다른 설정을 하지 않은 경우 기본적으로 사용됩니다.

spring.datasource.hikari.data-source-properties.oracle.jdbc.defaultConnectionValidation=FAST
METADATA METADATA는 데이터베이스 메타데이터를 사용하여 연결을 검사합니다. 이는 데이터베이스에 대한 메타 정보를 조회하여 연결이 유효한지 확인합니다.

spring.datasource.hikari.data-source-properties.oracle.jdbc.defaultConnectionValidation=METADATA

TABLE TABLE은 특정 테이블에 대해 간단한 쿼리를 실행하여 연결을 검사합니다. 예를 들어, Oracle 데이터베이스에서는 DUAL 테이블을 사용할 수 있습니다.

spring.datasource.hikari.connection-test-query=SELECT 1 FROM DUAL
spring.datasource.hikari.data-source-properties.oracle.jdbc.defaultConnectionValidation=TABLE

반응형

선택 기준

구분 선택기준 장점 단점
SOCKET
  • 네트워크 연결 상태를 빠르게 확인하고자 할 때.
  • 데이터베이스 서버가 응답하지 않을 경우를 빠르게 감지하고자 할 때.
  • 데이터베이스 쿼리를 실행하지 않고 유효성 검사를 수행하여 성능을 최적화하고자 할 때.
  • 네트워크 레벨에서 커넥션의 유효성을 확인하는 것이 충분할 때.
  • 빠른 검사 속도.
  • 낮은 오버헤드.
  • 네트워크 상태를 직접적으로 확인.
소켓 연결만 확인하므로, 데이터베이스 서버는 작동하지만 서비스가 중단된 경우 감지하지 못할 수 있음.
FAST
  • 기본적인 유효성 검사를 원할 때.
  • 특별한 조건 없이 간단하고 빠르게 연결 유효성을 확인하고자 할 때.
  • 매우 빠른 검사.
  • 설정이 간단하고 기본적인 유효성 검사 제공.
일부 상황에서 충분한 검사가 이루어지지 않을 수 있음.
METADATA
  • 데이터베이스의 메타데이터를 사용하여 보다 정교한 유효성 검사를 수행하고자 할 때.
  • 데이터베이스의 상태를 보다 구체적으로 확인할 필요가 있을 때.
  • 데이터베이스의 상태를 보다 자세히 확인 가능.
  • 메타데이터 조회를 통해 연결이 유효한지 확인.
  • 메타데이터 조회 쿼리가 다소 느릴 수 있음.
  • 데이터베이스에 일정한 부하를 줄 수 있음.
TABLE
  • 특정 테이블에 대해 간단한 쿼리를 실행하여 연결 상태를 확인하고자 할 때.
  • 데이터베이스 연결이 유효한지 확인하기 위해 실제 쿼리를 실행하는 것이 중요할 때.
  • 실제 쿼리를 실행하여 데이터베이스의 상태를 정확히 확인.
  • 데이터베이스의 쿼리 실행 상태를 직접적으로 검증.
  • 쿼리 실행으로 인한 오버헤드 발생.
  • 쿼리 실행 시간이 길어질 수 있음.

 

 

SOCKET으로 설정시 장점

1. 네트워크 연결 상태 확인

SOCKET 설정은 소켓을 통해 직접 네트워크 연결 상태를 확인합니다. 이는 네트워크 수준에서 데이터베이스 서버에 대한 접근이 가능한지 빠르게 확인할 수 있습니다. 네트워크 연결이 끊어졌거나 데이터베이스 서버가 다운된 경우, 빠르게 감지할 수 있습니다.

2. 빠른 유효성 검사

소켓 검사는 일반적으로 매우 빠릅니다. 데이터베이스에 쿼리를 실행하지 않고 소켓 연결만 확인하므로, 유효성 검사가 빠르게 이루어집니다. 이는 응답 시간을 줄이고 애플리케이션 성능을 향상시킬 수 있습니다.

3. 낮은 오버헤드

쿼리를 실행하지 않고 소켓 연결만 검사하기 때문에, 데이터베이스 서버에 대한 부하가 적습니다. 이는 특히 많은 수의 커넥션을 유지해야 하는 대규모 애플리케이션에서 유리합니다.

4. 효율적인 자원 사용

소켓 검사는 네트워크 자원을 효율적으로 사용합니다. 이는 데이터베이스 서버와의 연결 상태를 확인하는 데 필요한 최소한의 자원을 사용하여, 시스템의 다른 부분에 더 많은 자원을 할당할 수 있게 합니다.

가볍고 빠르게 유효성 검사를 해야할 경우에는 SOCKET을 추천 드립니다.
728x90
반응형