[Spring] Hikari Connection Pool JavaConfig로 설정하기
Connection Pool?
데이터베이스 성능을 개선할 때 가장먼저 고려할 수 있는것은 Connection Pool을 만드는 것이라고 할 수 있다.
DB와 연결을 담당하는 DB Connection은 유지하는것에 비해 생성하는데 자원이 많이 소모된다. 때문에 단시간에 많은 DB연결 요청이 들어오는 경우 매 연결마다 Connection을 생성, 해제하면서 자원을 소모하게 되고 이는 결국 전체적인 서버의 성능저하로 이어 질 수 있다.
이를 방지하기위해 DB Connection을 미리 일정 수 만큼 만들어두고 필요할 때 꺼내쓰는 방법이 제시되었는데, 이 방법이 바로 Connection Pool
기법이다.
Connection Pool 기법을 DB에 적용하였다는 의미에서 DBCP라고도 한다.
Spring의 DBCP
과거 spring에서는 Apache에서 제공하는 Connection Pool을 사용하였다.
HikariCP라는 녀석이 등장하고 기존의 방법보다 성능과 비용측면에서 매우 우수한 효과를 보여주었다.
하지만 Spring 2버전 이후? 부터 기본 Connection Pool로 채택되어 별다른 설정이 없다면 Spring은 기본으로 HikariCP
를 사용한다.
Spring boot에서의 Connection Pool 설정
Spring에서 여러가지 설정이 필요할때는 주로 yaml
이나 application.properties
같은 문서를 작성하지만, 본문에서는 JavaConfig를 통해 설정할것이다.
Spring boot에서 HikariCP를 사용하는 법은 간단한데, Spring에서 DB사용을 위해 DataSource를 Bean으로 등록할 때, HikariDataSource
의 인스턴스를 리턴하는 Bean을 작성하면 된다.
@Configuration
public class HikariConfig{
@Value("${spring.datasource.username}") // 1
private String username;
@Value("${spring.datasource.password}") // 1
private String password;
@Value("${spring.datasource.url}") // 1
private String url;
// 2
@Bean
public DataSource dataSource() {
HikariConfig hikariConfig = new HikariConfig(); // 3
hikariConfig.setUsername(username);
hikariConfig.setPassword(password);
hikariConfig.setJdbcUrl(url);
hikariConfig.setConnectionTestQuery("SELECT 1");
hikariConfig.setMaximumPoolSize(100); // Connection Pool에서 갖고있을 Connection의 갯수
hikariConfig.setLeakDetectionThreshold(30000);
hikariConfig.setPoolName("Mariadb-HikariCP");
return new HikariDataSource(hikariConfig); // 4
}
}
yaml
파일에 설정되어 있는 DataSource관련 값들을 가져와 사용DataSource
빈 등록HikariDataSource
설정을 위한HikariConfig
객체를 생성하고 알맞는 값들을 설정HikariConfig
객체를 인자로 하여,HikariDataSource
객체 리턴
이렇게 하면 HikariCP의 설정은 끝이 난다
특히, setMaximumPoolSize의 설정을 통해 미리 생성될 Connection의 갯수를 지정할 수 있다.
Author And Source
이 문제에 관하여([Spring] Hikari Connection Pool JavaConfig로 설정하기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@albaneo0724/Spring-Hikari-Connection-Pool-JavaConfig로-설정하기저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)