티스토리 뷰
안녕하십니까
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
- angular router
- data table component
- Angular
- facebook login
- data gird component
- Router
- React-router
- CSS
- python3
- Spring
- Java
- Python
- jQuery
- 파이썬
- JSON
- data grid component
- 페이스북 로그인
- data component
- mobx
- https://www.tistory.com/auth/logout/
- Redux
- localStorage
- 파이썬3
- Spring Boot
- MySQL
- data component module
- react
- JPA
- JavaScript
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |