티스토리 뷰

BackEnd/Java

spring boot HikariCP

철철22 2019. 1. 6. 23:51
반응형

안녕하십니까


Spring boot를 사용하면서 스프링 뿐 아니라 DB를 연결하기 위해 JDBC Connection Pool을 사용하지 않습니까?

그 전에 Connection Pool에 대해 간단히 설명 드리면 데이터베이스와 연결된 커넥션을 미리 만들어서 풀(pool)속에 저장해 두고 있다가 필요할 때 커넥션 풀에서 쓰고 다시 반환하는 기법을 말합니다.


Spring boot 2.0 버전 이전에는 Tomcat JDBC Connection Pool을 사용했으나, 그 이후는 HikariCP로 Default가 바뀌었습니다.


HikariCP는 다음을 강조합니다.

빠르고, 단순하고, 안정적이고, zero-overhead, 그리고 130KB 가벼움


밑의 사진은 벤치마킹 그래프 입니다.



ㄹ

HikariCP 벤치마킹




그럼 간단히 세팅부터 Bean 잡는법까지 확인해 보겠습니다.

일단 Spring boot 2.0 이하에서 사용하려면 다음과 같은 Dependency가 필요합니다.


pom.xml

<dependency>
    <groupId>com.zaxxer</groupId>
    <artifactId>HikariCP</artifactId>
    <version>3.1.0</version>
</dependency> 


gradle

compile 'com.zaxxer:HikariCP:3.1.0'


하지만 2.0 이후부터는 default로 잡혀 있기 때문에 다음과 같은 dependency만 추가해 주면 됩니다.

compile 'org.springframework.boot:spring-boot-starter-jdbc'
// OR
compile 'org.springframework.boot:spring-boot-starter-jdbc-jpa'


그리고 application.properties에 다음과 같은 설정들을 지정할 수 있습니다.




하지만!!!!

아까도 언급했지만 2.0부터는 default로 잡혀있기 때문에 다음과 같이 기본 spring.datasource 옵션을 사용하고 그 밖의 hikari 설정에 대해서만 위의 속성들을 사용하시면 될 거 같습니다.



그리고 2.0이하에서 hikariCP를 사용을 한다면 @Bean 설정까지 잡아줘야겠죠???

설정 방법은 여러가지가 있지만 github에서는 다음과 같이 설정하는 법을 알려주네요.

HikariConfig config = new HikariConfig();
config.setJdbcUrl("jdbc:mysql://localhost:3306/simpsons");
config.setUsername("bart");
config.setPassword("51mp50n");
config.addDataSourceProperty("cachePrepStmts", "true");
config.addDataSourceProperty("prepStmtCacheSize", "250");
config.addDataSourceProperty("prepStmtCacheSqlLimit", "2048");
HikariDataSource ds = new HikariDataSource(config);
 
// or directly instantiate a HikariDataSource like so:

HikariDataSource ds = new HikariDataSource();
ds.setJdbcUrl("jdbc:mysql://localhost:3306/simpsons");
ds.setUsername("bart");
ds.setPassword("51mp50n");

Google에 검색하면 이보다 더 친절하게 세팅하는법들이 많으니 찾아보시고 마지막으로 설정 옵션들에 대해 간단히 알아보고 글을 마치겠습니다.


일단 Essentials들로는


dataSourceClassName -> 이전 버전 드라이버에서 hikari를 사용할 경우에는 설정

-or-

jdbcUrl 아니면 이 속성만 사용해도 무관


username

password

들이 있습니다.


그리고 주로 사용하는 옵션들이 몇가지 있습니다.


autoCommit - property 수정 후 자동 적용 옵션 같습니다. default - true


idleTimeout - minimumIdle이 maximumPoolSize보다 작을 때 사용해야 하는 옵션입니다. 타임아웃 되기까지의 유휴상태(켜지있고 일은 안하는 상태)를 제어하는것 같습니다. default - 10000ms


maxLifetime - 필수 옵션일 정도로 필요합니다.default - 1800000 (30분)


connectionTestQuery - 살은 모르겠지만 연결되나 안되나 먼저 테스트 해보는 옵션이겠죠?


minimumIdle - 이 옵션은 건들지 않는 것을 추천하는데 만약에 설정하시면 maximumpoolSize보다 적게 설정하세요.  default - maximunpoolSize와 동일


maximumPoolSize - 이 설정을 잘 유지하면 최적의 효과를 낼 수 있는 것 같습니다.  default-10


완벽한 설명은 아니었지만 그래도 spring boot를 사용하면서 어떠한 CP를 사용하는지에 대해 소개해드리고 싶어 간단한 글을 작성해봤습니다.


더 자세한 설명은 HikariCP Github를 참조해 주세요!



감사합니다.



출처 

Hikari

https://jojoldu.tistory.com/296

https://github.com/brettwooldridge/HikariCP

https://jeong-pro.tistory.com/162

https://www.concretepage.com/spring-boot/spring-boot-hikaricp


 

커넥션

http://devbox.tistory.com/entry/JSP-%EC%BB%A4%EB%84%A5%EC%85%98-%ED%92%80-1 

반응형

'BackEnd > Java' 카테고리의 다른 글

spring boot properties파일 분리하기  (0) 2019.03.04
nginx  (0) 2019.02.27
openjdk 설치하기  (0) 2018.12.16
가변 인자 (varargs)  (0) 2018.11.13
JAVA 디자인 패턴 강좌  (0) 2018.11.06
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
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
글 보관함