
brettwooldridge - Overview
Vice President and Lead Architect of Software Development. Father of an angel who fell to Earth and somehow into my life. - brettwooldridge
github.com
Hikari – Java, SQL and jOOQ.
Welcome to the jOOQ Tuesdays series. In this series, we’ll publish an article on the third Tuesday every other month where we interview someone we find exciting in our industry from a jOOQ perspective. This includes people who work with SQL, Java, Open S
blog.jooq.org
이 개발자가 오픈소스 Connection Pool관련 프로젝트들을 받아서 필요한 부분들을 고치는 도중 쓸모없는 코드가 많았고, 자신이 만들면 더 빠르게 만들 수 있을것 같다는 내용이었던 것 같다.
HikariCP와 다른 풀의 성능테스트 사례
왼쪽것은 [ DataSource.getConnection()/Connection.close() ]를 한번의 Cycle로 나타낸걸로 같은시간대비 hikari가 가장많이 돌았다.
오른쪽 것은 [ Connection.prepareStatement(), Statement.execute(), Statement.close()]를 한번의 Cycler로 나타낸걸로 이역시 같은시간대비 hikaricp가 가장많이 돌았다.
주요 속성
-
autoCommit : 풀에서 가져온 connection의 기본 자동커밋 동작을 제어합니다.default : true
-
connectionTimeout : 클라이언트가 풀에서 연결을 기다리는 최대 시간으로 Connection 을 사용하려는 대기시간을 초과하면 SQLException이 발생합니다. 허용되는 가장 낮은 연결시간은 250ms입니다. Default: 30000(30초)
-
idleTimeout : 풀에서 일을하지 않고 커넥션을 유지하는 시간으로서 이 설정은 minimumIdle이 maximumPoolSize보다 작게 정의된 경우에만 적용됩니다. 풀이 minimumIdle(pool에서 유지하는 최소 커넥션 수)에 도달하면 Idle Connection이 중단되지않습니다.연결이 유휴상태로 폐기되는지 여부는 최대 +30초 및 평균 +15초 변동이 적용됩니다.이 시간 초과 전에 연결이 유휴상태로 만료되지 않습니다. 값 0은 유휴 연결이 풀에서 제거되지 않음을 의미합니다.최소 허용값은 10000ms(10초)입니다. 기본값: 600000(10분)
-
keepAlivetime : DB또는 network인프라에 의해 시간초과되는 것을 방지하기 위해 HikariCP가 연결을 유지하려고시도하는 빈도를 제어합니다. 이 값은 maxLifetime값보다 작아야합니다. Keepalive는 Idle Connection에서만 발생합니다.
-
maxLifetime : 이 속성은 풀에서 연결의 최대 수명을 제어합니다. 사용중인 연결은 절대 폐기되지 않으며 닫힐 때만 제거됩니다.연결별로 풀에서 대량 소멸을 방지하기 위해 약간의 음의 감쇠가 적용됩니다. 이 값을 설정하는 것이 좋습니다.이 값은 db또는 인프라에서 부과하는 연결 시간 제한보다 몇초 더 짧아야합니다. 값 0은 최대 수명이 없음을 나타내며물론 idleTimeout 설정에 따릅니다. 최소 허용 값은 30000ms(30초)입니다. 기본값: 1800000(30분)
-
minimumIdle : HikariCP가 풀에서 유지하려고 하는 최소 유휴 연결 수를 제어합니다. Default값은 maximumPoolSize와 같기 때문에은 성능을 원한다면 이 값을 건드리지 않는것이 좋음
-
maximumPoolSize : 이 속성은 idle Connection과 사용중인 connection을 모두 포함하여 풀이 도달할 수 있는 최대 크기를 제어합니다.기본적으로 이 값은 데이터베이스 백엔드에 대한 실제 연결 최대 수를 결정합니다. 풀이 이 크기에 도달하였는데 사용 가능한idle connection이 없으면 connectionTimeout을 초과하는 순간 Exception이 발생합니다.

'IT > Spring Boot' 카테고리의 다른 글
서비스 클래스는 인터페이스를 상속받아야 하는가? (0) | 2023.04.16 |
---|---|
FeignClient 사용시 GET요청시 인자를 추가하기 (@SpringQueryMap) (2) | 2022.02.27 |
Spring 공부중,, hateoas가 1.0.2 가 되면서 바뀐부분 (0) | 2020.10.21 |
MyBatis 1:N select <collection> 에러 (0) | 2020.10.19 |
스프링 부트 시작시 숙지할 개념(?) (0) | 2020.10.15 |