ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Spring Boot HikariCP
    Spring 2020. 2. 4. 13:51

    DB Connection Pool

    쉽게 설명을 하자면 클라이언트가 서버로부터 값을 받길 원하는 과정에서 가장 오래걸리는 시간은 바로 데이터베이스에 처음 연결하는 커넥션 부분이다. 이러한 시간을 줄이기 위해서 Spring Boot 에서는 데이터베이스와 연결된 커넥션을 미리 생성을 해서 풀속에 저장해 두고 있다가 필요할 때 커넥션 풀에서 쓰고 반환하는 DB Connection Pool 인 HikariCP를 사용한다.

    HikariCP

    기존의 사용하던 Tomcat JDBC Connection Pool보다 가볍고(130KB), 빠르고, 단순하고, 안정적이며, zero-overhead를 자랑한다.

    설정방법

    Spring Boot 2.0이상 버전에서는 HikariCP가 default로 잡혀있기에 pom.xml OR gradle에서 jdbc OR jpa만 잡혀있으면 사용할 수 있다.

     

    그리고 application.yml에서 hikari의 설정들을 사용할 수 있다.

    Spring Boot 2.0 부터는 자동으로 잡혀있기 때문에 기본 datasource 옵션만 설정하고 그 밖에 설정만 위에있는 hikari 속성들을 사용하면 된다.

     

    참고 : https://charlie-choi.tistory.com/203

     

    HikariCP 옵션

    autoCommit : auto commit 설정 (기본값 : true)

    connectionTimeout : pool에서 커넥션을 얻어오기전까지 기다리는 최대 시간, 허용가능한 wait time을 초과하면

                               SQLException발생 최소 설정시간 250ms (기본값 30000ms) 30초

    idleTimeout : pool에 일을 안하는 커넥션을 유지하는 시간. 이 옵션은 minimumIdle이 maximumPoolSize보다 작게

                      설정되어 있을 때만 설정한다. 최소 설정값은 10000ms (기본값 600000ms) 10분

    maxLifetime : 커넥션 풀에서 살아있을 수 있는 커넥션의 최대 수명시간. 사용중인 커넥션은 maxLifetime에 상관없이

                       제거되지 않는다. 사용중이지 않을 때에만 제거된다. 그리고 풀 전체가아닌 커넥션 별로 적용이되는데

                       그 이유는 풀에서 대량으로 커넥션들이 제거되는 것을 방지하기 위함이다.

    minimumIdle : 아무런 일을 하지않아도 적어도 이 옵션에 설정 값 size로 커넥션들을 유지해주는 설정. 최적의 성능과 응답성을 요구한                         다면 이 값은 설정하지 않는게 좋다. 기본값을 보면 이해할 수있습니다. (기본값 maximumPoolSize 값이랑 같음)

    maximumPoolSize : pool에 유지시킬 수 있는 최대 커넥션 수. pool의 커넥션 수가 옵션(설정) 값에 도달하게 되면

                                idle(대기)인 상태는 존재하지 않는다. (기본값 10)

     

    참고 및 다른 설정값 https://effectivesquid.tistory.com/entry/HikariCP-%EC%84%B8%ED%8C%85%EC%8B%9C-%EC%98%B5%EC%85%98-%EC%84%A4%EB%AA%85

    'Spring' 카테고리의 다른 글

    Spring Boot로 알아가는 Swagger  (0) 2020.04.07
    Spring JPA(5) 게시판  (0) 2020.02.18
    Spring JPA(4) 연관관계 매핑  (0) 2020.01.30
    Spring JPA(3) CRUD 기본 예제  (0) 2020.01.30
    Spring JPA(2) - 엔티티 매핑  (0) 2020.01.29

    댓글

Designed by Tistory.