You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Spring Boot 애플리케이션이 데이터베이스와 연결되는 과정은 일반적으로 애플리케이션이 시작될 때, 즉 애플리케이션이 초기화될 때 발생합니다. 이때 Spring Boot는 DB 연결을 설정하고, 애플리케이션이 실행될 준비가 되면 클라이언트 요청을 처리하기 위해 DB와의 연결을 사용할 수 있습니다.
1. 애플리케이션 시작 시 DB 연결 설정
Spring Boot는 @SpringBootApplication 어노테이션이 적용된 클래스를 실행할 때, DataSource 설정을 로드하고, 데이터베이스 연결을 설정합니다.
이 연결은 Spring Boot의 자동 구성(Auto Configuration)을 통해 처리되며, HikariCP(기본 커넥션 풀)을 사용하여 DB 연결을 관리합니다.
2. 데이터베이스와 연결 후 요청 처리
애플리케이션이 시작되고 DB 연결이 성공적으로 이루어지면, 클라이언트가 보내는 HTTP 요청에 대해 처리할 준비가 됩니다.
각 요청에 대해 JPA(Java Persistence API)나 JDBC를 사용하여 데이터베이스와 쿼리 요청을 주고받습니다.
3. 요청 시 DB 쿼리 실행
클라이언트가 HTTP 요청을 보내면, Spring Boot 애플리케이션은 해당 요청에 대응하는 컨트롤러 메서드를 실행합니다.
이때 **서비스 계층(Service Layer)**에서 DB에 쿼리를 보내는 작업을 하게 되며, DB에서 데이터를 가져오거나, 데이터를 수정하는 등의 작업을 수행합니다.
DB 연결은 자동 커넥션 풀링을 통해 재사용되며, 필요한 경우 새로운 커넥션을 설정합니다.
4. DB 연결 종료
애플리케이션 종료 시, Spring Boot는 **@PreDestroy**나 @Bean으로 등록된 콜백 메서드를 통해 DB 커넥션을 종료하고, 자원을 해제합니다.
이러한 과정은 Spring Boot의 자동화된 설정에 의해 대부분 관리되며, 개발자는 데이터베이스와의 연결을 위한 구체적인 설정을 직접 신경 쓸 필요 없이, 설정 파일을 통해 간단하게 연결 정보를 제공하고 애플리케이션을 실행할 수 있습니다.
HikariCP란?
HikariCP는 Java 데이터베이스 커넥션 풀(Connection Pool) 중 하나로, 데이터베이스와 애플리케이션 간의 연결을 효율적으로 관리하고 최적화하는 라이브러리입니다. Spring Boot에서는 기본적으로 HikariCP를 사용하여 DB 연결을 관리합니다.
1. 커넥션 풀 (Connection Pool)
커넥션 풀은 데이터베이스에 대한 연결을 미리 만들어 놓고 필요할 때마다 가져다 쓰는 방식입니다. 이를 통해 매번 새 연결을 생성하고 종료하는 오버헤드를 줄여 성능을 개선할 수 있습니다.
커넥션 풀은 애플리케이션과 데이터베이스 간의 커넥션을 재사용하는 방식으로 성능을 극대화하며, 여러 사용자가 동시에 데이터베이스에 접근할 수 있게 도와줍니다.
자동 커넥션 풀 관리: 애플리케이션에서 요청이 들어올 때마다 HikariCP는 커넥션 풀에서 사용 가능한 커넥션을 제공하며, 요청이 끝나면 커넥션을 풀에 반환합니다.
3. HikariCP의 동작
애플리케이션이 시작되면 HikariCP는 지정된 데이터베이스와의 커넥션을 일정 수 생성합니다.
클라이언트가 데이터베이스에 접근하려면 HikariCP에서 커넥션을 가져오고, 작업이 끝난 후에는 다시 풀로 반환됩니다.
필요 시 HikariCP는 풀에서 새로운 커넥션을 생성하거나, 커넥션이 충분히 남지 않으면 커넥션 수를 늘려주는 방식으로 동작합니다.
HikariCP 디폴트 연결 수 및 적정 값 설정
1. 디폴트 커넥션 풀 설정
HikariCP의 기본 설정에서 최대 커넥션 수는 10입니다. 즉, 기본적으로 애플리케이션이 실행될 때 HikariCP는 최대 10개의 커넥션을 풀에 유지하며, 데이터베이스와의 연결을 관리합니다.
최소 커넥션 수는 기본적으로 10으로 설정되어 있지만, 풀의 크기가 줄어들지 않도록 관리됩니다.
디폴트 설정:
maximumPoolSize: 10 (최대 커넥션 수)
minimumIdle: 10 (최소 커넥션 수)
2. 적정 커넥션 수 설정
커넥션 풀의 적정 크기는 여러 가지 요인에 따라 달라지며, 설정 시 다음과 같은 요소들을 고려해야 합니다:
서버의 성능: 서버의 CPU, 메모리, 네트워크 대역폭에 따라 적정 커넥션 수는 달라집니다. 서버가 처리할 수 있는 최대 커넥션 수를 넘어서는 커넥션을 생성하면 서버의 성능 저하나 연결 실패가 발생할 수 있습니다.
동시 사용자 수: 애플리케이션에 동시 요청을 보내는 사용자의 수에 따라 커넥션 풀의 크기를 조정해야 합니다. 동시 요청이 많을 경우, 풀의 크기를 늘려야 합니다.
데이터베이스의 처리 능력: 데이터베이스가 동시에 처리할 수 있는 연결 수를 고려해야 합니다. 너무 많은 커넥션을 데이터베이스에 생성하면, DB 자체의 성능 문제가 발생할 수 있습니다.
권장 사항:
일반적으로 최대 커넥션 수는 서버 성능과 데이터베이스의 처리 능력에 맞춰 설정해야 합니다.
초과 설정된 커넥션 수는 성능 저하를 초래할 수 있으며, 과도한 연결로 인해 리소스 낭비나 데이터베이스 과부하가 발생할 수 있습니다.
예를 들어, 웹 애플리케이션에서 하루 수천 건의 요청이 처리되는 시스템이라면, 커넥션 풀의 크기를 20~50개로 설정하는 것이 적정할 수 있습니다. 실제 부하 테스트를 통해 최적의 커넥션 수를 조정하는 것이 좋습니다.
3. HikariCP 커넥션 풀 관련 주요 설정
HikariCP에서는 다음과 같은 설정을 통해 커넥션 풀의 크기를 조정할 수 있습니다:
maximumPoolSize: 풀에서 유지할 최대 커넥션 수 (기본값: 10)
minimumIdle: 최소로 유지할 유휴 커넥션 수 (기본값: 10)
idleTimeout: 커넥션이 유휴 상태로 유지될 최대 시간 (기본값: 600,000ms / 10분)
connectionTimeout: 커넥션을 가져올 때의 최대 대기 시간 (기본값: 30,000ms / 30초)
적절한 커넥션 수와 기타 설정을 통해 애플리케이션의 성능을 최적화할 수 있습니다.
The text was updated successfully, but these errors were encountered:
mr8356
changed the title
Spring Boot Application과 DB의 연결
Spring Boot Application의 DB의 연결과 커넥션 풀(HikariCP)
Nov 13, 2024
Spring Boot Application과 DB 연결
Spring Boot 애플리케이션이 데이터베이스와 연결되는 과정은 일반적으로 애플리케이션이 시작될 때, 즉 애플리케이션이 초기화될 때 발생합니다. 이때 Spring Boot는 DB 연결을 설정하고, 애플리케이션이 실행될 준비가 되면 클라이언트 요청을 처리하기 위해 DB와의 연결을 사용할 수 있습니다.
1. 애플리케이션 시작 시 DB 연결 설정
@SpringBootApplication
어노테이션이 적용된 클래스를 실행할 때,DataSource
설정을 로드하고, 데이터베이스 연결을 설정합니다.HikariCP
(기본 커넥션 풀)을 사용하여 DB 연결을 관리합니다.2. 데이터베이스와 연결 후 요청 처리
3. 요청 시 DB 쿼리 실행
4. DB 연결 종료
@PreDestroy
**나@Bean
으로 등록된 콜백 메서드를 통해 DB 커넥션을 종료하고, 자원을 해제합니다.이러한 과정은 Spring Boot의 자동화된 설정에 의해 대부분 관리되며, 개발자는 데이터베이스와의 연결을 위한 구체적인 설정을 직접 신경 쓸 필요 없이, 설정 파일을 통해 간단하게 연결 정보를 제공하고 애플리케이션을 실행할 수 있습니다.
HikariCP란?
HikariCP는 Java 데이터베이스 커넥션 풀(Connection Pool) 중 하나로, 데이터베이스와 애플리케이션 간의 연결을 효율적으로 관리하고 최적화하는 라이브러리입니다. Spring Boot에서는 기본적으로 HikariCP를 사용하여 DB 연결을 관리합니다.
1. 커넥션 풀 (Connection Pool)
커넥션 풀은 데이터베이스에 대한 연결을 미리 만들어 놓고 필요할 때마다 가져다 쓰는 방식입니다. 이를 통해 매번 새 연결을 생성하고 종료하는 오버헤드를 줄여 성능을 개선할 수 있습니다.
커넥션 풀은 애플리케이션과 데이터베이스 간의 커넥션을 재사용하는 방식으로 성능을 극대화하며, 여러 사용자가 동시에 데이터베이스에 접근할 수 있게 도와줍니다.
자동 커넥션 풀 관리: 애플리케이션에서 요청이 들어올 때마다 HikariCP는 커넥션 풀에서 사용 가능한 커넥션을 제공하며, 요청이 끝나면 커넥션을 풀에 반환합니다.
3. HikariCP의 동작
HikariCP 디폴트 연결 수 및 적정 값 설정
1. 디폴트 커넥션 풀 설정
10
입니다. 즉, 기본적으로 애플리케이션이 실행될 때 HikariCP는 최대 10개의 커넥션을 풀에 유지하며, 데이터베이스와의 연결을 관리합니다.10
으로 설정되어 있지만, 풀의 크기가 줄어들지 않도록 관리됩니다.디폴트 설정:
maximumPoolSize
: 10 (최대 커넥션 수)minimumIdle
: 10 (최소 커넥션 수)2. 적정 커넥션 수 설정
커넥션 풀의 적정 크기는 여러 가지 요인에 따라 달라지며, 설정 시 다음과 같은 요소들을 고려해야 합니다:
권장 사항:
3. HikariCP 커넥션 풀 관련 주요 설정
HikariCP에서는 다음과 같은 설정을 통해 커넥션 풀의 크기를 조정할 수 있습니다:
maximumPoolSize
: 풀에서 유지할 최대 커넥션 수 (기본값: 10)minimumIdle
: 최소로 유지할 유휴 커넥션 수 (기본값: 10)idleTimeout
: 커넥션이 유휴 상태로 유지될 최대 시간 (기본값: 600,000ms / 10분)connectionTimeout
: 커넥션을 가져올 때의 최대 대기 시간 (기본값: 30,000ms / 30초)적절한 커넥션 수와 기타 설정을 통해 애플리케이션의 성능을 최적화할 수 있습니다.
The text was updated successfully, but these errors were encountered: