티스토리 뷰

궁금한 것

Connection pool

eyoadgkn 2024. 2. 2. 15:44

 

Connection pool

Connection Pool은 데이터베이스 연결을 미리 생성하고 관리하는 기술입니다.

why


성능 향상: 데이터베이스 연결을 생성하는 것은 비용이 많이 드는 작업입니다. Connection Pool을 사용하면 미리 연결을 생성해두고 재사용할 수 있기 때문에 응답 시간이 빨라집니다.

리소스 관리: 데이터베이스 연결은 제한된 리소스입니다. Connection Pool을 사용하면 연결을 효율적으로 관리하여 리소스 고갈을 방지할 수 있습니다.

연결 지속성: Connection Pool은 연결을 유지하여 연결 수명 주기를 관리합니다. 이를 통해 연결이 자주 끊기는 것을 방지할 수 있습니다.

import com.zaxxer.hikari.HikariConfig;
import com.zaxxer.hikari.HikariDataSource;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import javax.sql.DataSource;

@Configuration // Spring 설정 클래스임을 나타내는 어노테이션
public class DatabaseConfig {

    // application.properties 또는 application.yml에 정의된 데이터베이스 URL을 주입받음
    @Value("${spring.datasource.url}")
    private String jdbcUrl;

    // application.properties 또는 application.yml에 정의된 데이터베이스 사용자명을 주입받음
    @Value("${spring.datasource.username}")
    private String username;

    // application.properties 또는 application.yml에 정의된 데이터베이스 비밀번호를 주입받음
    @Value("${spring.datasource.password}")
    private String password;

    @Bean // Spring이 관리하는 Bean으로 등록
    public DataSource dataSource() {
        // HikariCP Connection Pool 설정
        HikariConfig config = new HikariConfig();
        config.setJdbcUrl(jdbcUrl);
        config.setUsername(username);
        config.setPassword(password);

        // Connection Pool 세부 설정
        config.setMaximumPoolSize(20); // 최대 연결 수 20
        config.setMinimumIdle(5); // 최소 유휴 연결 수 5
        config.setConnectionTimeout(30000); // 연결 획득 시간 제한 30초
        config.setIdleTimeout(600000); // 유휴 연결 종료 시간 제한 10분

        // HikariDataSource 객체 생성 및 반환
        return new HikariDataSource(config);
    }
}

 

Spring Boot 애플리케이션에서 데이터베이스 연결을 관리하기 위한 DatabaseConfig 클래스입니다.

@Configuration 어노테이션은 이 클래스가 Spring 설정 클래스임을 나타냅니다.
@Value 어노테이션을 사용하여 application.properties 또는 application.yml 파일에 정의된 데이터베이스 URL, 사용자명, 비밀번호를 주입받습니다.
@Bean 어노테이션이 붙은 dataSource() 메서드는 Spring이 관리하는 Bean으로 등록됩니다.
dataSource() 메서드 내부에서는 HikariCP Connection Pool을 구성합니다.
HikariConfig 객체를 생성하고, 데이터베이스 연결 정보를 설정합니다.

Connection Pool의 세부 설정을 수행합니다.

maxPoolSize: 최대 연결 수 20
minimumIdle: 최소 유휴 연결 수 5
connectionTimeout: 연결 획득 시간 제한 30초
idleTimeout: 유휴 연결 종료 시간 제한 10분
HikariDataSource 객체를 생성하여 반환합니다.

이와 같이 DatabaseConfig 클래스는 HikariCP Connection Pool을 구성하여 데이터베이스 연결을 관리하는 역할을 합니다.

'궁금한 것' 카테고리의 다른 글

Spring Boot와 Spring Framework  (0) 2024.05.20
WEB-INF 폴더  (0) 2024.02.05
DML/DDL/DCL  (0) 2024.02.02
HashCode  (0) 2024.01.31
Null point Exception이란  (0) 2024.01.31
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2024/07   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
글 보관함