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
반응형
'JAVA' 카테고리의 다른 글
Java 21의 새로운 기능 (0) | 2024.08.27 |
---|---|
Zulu JDK: 무료로 장기 지원을 받을 수 있는 최고의 Java JDK (0) | 2024.08.21 |
ZGC 기본 개념 알아보기 (0) | 2024.07.15 |
[테스트] JaCoCo란 무엇인가? (0) | 2024.07.15 |
[TDD] UnitTest(단위 테스트)란 무엇인가? (0) | 2024.07.15 |