autoCommit
이 속성은 풀에서 반환된 연결의 기본 자동 커밋 동작을 제어합니다. 부울 값입니다. 기본값: 참
connectionTimeout 접속 시간 초과
이 속성은 클라이언트(귀하)가 풀에서 연결을 기다리는 최대 시간(밀리초)을 제어합니다. 연결을 사용할 수 없는 상태에서 이 시간을 초과하면 SQLException이 발생합니다. 허용 가능한 최저 연결 제한 시간은 250ms입니다. 기본값: 30000(30초)
idleTimeout 유휴 시간 초과
이 속성은 연결이 풀에서 유휴 상태로 있을 수 있는 최대 시간을 제어합니다. 이 설정은 minimumIdle이 maximumPoolSize 미만으로 정의된 경우에만 적용됩니다. 풀이 minimumIdle 연결에 도달하면 유휴 연결이 만료되지 않습니다. 연결이 유휴 상태로 종료되는지 여부는 최대 +30초의 변동과 +15초의 평균 변동이 적용됩니다. 이 시간 초과 전에는 연결이 유휴 상태로 만료되지 않습니다. 값 0은 유휴 연결이 풀에서 제거되지 않음을 의미합니다. 최소 허용 값은 10000ms(10초)입니다. 기본값: 600000(10분)
maxLifetime 최대 수명
이 속성은 풀에서 연결의 최대 수명을 제어합니다. 사용 중인 연결은 절대 폐기되지 않으며 닫힐 때만 제거됩니다. 풀에서 대량 소멸을 방지하기 위해 연결별로 약간의 음수 감쇠가 적용됩니다. 이 값을 설정하는 것이 좋습니다. 연결 시간 제한이 있는 데이터베이스 또는 인프라보다 몇 초 더 짧아야 합니다. 값 0은 물론 idleTimeout 설정에 따라 최대 수명(무한 수명)이 없음을 나타냅니다. 기본값: 1800000(30분)
connectionTestQuery 연결 테스트 쿼리
드라이버가 JDBC4를 지원하는 경우 이 속성을 설정하지 않는 것이 좋습니다. 이는 JDBC4 Connection.isValid() API를 지원하지 않는 "레거시" 드라이버용입니다. 이것은 데이터베이스에 대한 연결이 여전히 활성 상태인지 확인하기 위해 풀에서 연결이 제공되기 직전에 실행되는 쿼리입니다. 다시 말하지만, 이 속성 없이 풀을 실행해 보십시오. HikariCP는 드라이버가 JDBC4와 호환되지 않는 경우 오류를 기록하여 알려줍니다. 기본값: 없음
minimumIdle 최소유휴
이 속성은 HikariCP가 풀에서 유지하려는 최소 유휴 연결 수를 제어합니다. 유휴 연결이 이 값 아래로 떨어지고 풀의 총 연결이 maximumPoolSize 미만인 경우 HikariCP는 추가 연결을 빠르고 효율적으로 추가하기 위해 최선을 다합니다. 그러나 최대 성능과 스파이크 요구에 대한 응답성을 위해 이 값을 설정하지 않고 대신 HikariCP가 고정 크기 연결 풀로 작동하도록 허용하는 것이 좋습니다. 기본값: maximumPoolSize와 동일
maximumPoolSize 최대 풀 크기
이 속성은 유휴 및 사용 중인 연결을 모두 포함하여 풀이 도달할 수 있는 최대 크기를 제어합니다. 기본적으로 이 값은 데이터베이스 백엔드에 대한 실제 연결의 최대 수를 결정합니다. 이에 대한 합리적인 값은 실행 환경에 따라 가장 잘 결정됩니다. 풀이 이 크기에 도달하고 사용 가능한 유휴 연결이 없으면 getConnection()에 대한 호출이 시간 초과되기 전에 최대 connectionTimeout 밀리초 동안 차단됩니다. 수영장 크기 조정에 대해 읽으십시오. 기본값: 10
metricRegistry 메트릭 레지스트리
이 속성은 프로그래밍 구성 또는 IoC 컨테이너를 통해서만 사용할 수 있습니다. 이 속성을 사용하면 풀에서 다양한 메트릭을 기록하는 데 사용할 Codahale/Dropwizard MetricRegistry의 인스턴스를 지정할 수 있습니다. 자세한 내용은 메트릭 위키 페이지를 참조하세요. 기본값: 없음
healthCheckRegistry 건강체크레지스트리
이 속성은 프로그래밍 구성 또는 IoC 컨테이너를 통해서만 사용할 수 있습니다. 이 속성을 사용하면 현재 상태 정보를 보고하기 위해 풀에서 사용할 Codahale/Dropwizard HealthCheckRegistry의 인스턴스를 지정할 수 있습니다. 자세한 내용은 상태 확인 위키 페이지를 참조하세요. 기본값: 없음
poolName 풀 이름
이 등록 정보는 연결 풀에 대한 사용자 정의 이름을 나타내며 풀 및 풀 구성을 식별하기 위해 주로 로깅 및 JMX 관리 콘솔에 나타납니다. 기본값: 자동 생성
prepStmtCacheSize
이는 MySQL 드라이버가 연결당 캐시할 준비된 명령문의 수를 설정합니다. 기본값은 보수적인 25입니다. 250-500 사이로 설정하는 것이 좋습니다.
prepStmtCacheSqlLimit
이것은 드라이버가 캐시할 준비된 SQL 문의 최대 길이입니다. MySQL 기본값은 256입니다. 경험상, 특히 Hibernate와 같은 ORM 프레임워크에서 이 기본값은 생성된 명령문 길이의 임계값보다 훨씬 낮습니다. 권장 설정은 2048입니다.
cachePrepStmts
기본적으로 캐시가 실제로 비활성화된 경우 위의 매개변수 중 어느 것도 영향을 미치지 않습니다. 이 매개변수를 true로 설정해야 합니다.
useServerPrepStmts
최신 버전의 MySQL은 서버 측 준비된 명령문을 지원하므로 상당한 성능 향상을 제공할 수 있습니다. 이 속성을 true로 설정합니다.
HikariCP의 일반적인 MySQL 구성
jdbcUrl=jdbc:mysql://localhost:3306/simpsons username=test password=test dataSource.cachePrepStmts=true dataSource.prepStmtCacheSize=250 dataSource.prepStmtCacheSqlLimit=2048 dataSource.useServerPrepStmts=true dataSource.useLocalSessionState=true dataSource.rewriteBatchedStatements=true dataSource.cacheResultSetMetadata=true dataSource.cacheServerConfiguration=true dataSource.elideSetAutoCommits=true dataSource.maintainTimeStats=false
HikariCP Datasource 설정 부분
- 기본적으로 Datasource를 이용한 설정 방법
- Springboot v2.x 이상부터 tomcat jdbc가 아닌 hikariCP 기본으로 지원
스프링부트 지원 properties를 이용한 설정 방법
########################################################################## ############### Hikari -Setting ########################################## spring.datasource.hikari.minimumIdle=2 spring.datasource.hikari.maximumPoolSize=10 spring.datasource.hikari.idleTimeout=120000 spring.datasource.hikari.data-source-properties.cachePrepStmts=true spring.datasource.hikari.data-source-properties.prepStmtCacheSize=250 spring.datasource.hikari.data-source-properties.prepStmtCacheSqlLimit=2048 spring.datasource.hikari.data-source-properties.useServerPrepStmts=true #Mysql spring.datasource.hikari.connectionTestQuery=select 1 from dual spring.datasource.hikari.connectionTimeout=300000 spring.datasource.hikari.leakDetectionThreshold=300000 #Oracle #spring.datasource.hikari.connectionTestQuery=select 1 from sys.dual #################### Hikari -Setting ###################################### ############################################################################
@Bean @ConfigurationProperties(prefix="spring.datasource.hikari") public HikariConfig hikariConfig() { return new HikariConfig(); }
java 설정 방법
@Bean public HikariConfig hikariConfig() { HikariConfig hikariConfig = new HikariConfig(); hikariConfig.setJdbcUrl(jdbcUrl); hikariConfig.setUsername(username); hikariConfig.setPassword(password); hikariConfig.setMaximumPoolSize(10); hikariConfig.addDataSourceProperty("cachePrepStmts", "true"); hikariConfig.addDataSourceProperty("prepStmtCacheSize", "250"); hikariConfig.addDataSourceProperty("prepStmtCacheSqlLimit", "2048"); hikariConfig.addDataSourceProperty("useServerPrepStmts", "true"); return hikariConfig; }
xml 설정 방법
<bean id="hikariConfig" class="com.zaxxer.hikari.HikariConfig"> <property name="driverClassName" value="${driver}" /> <property name="jdbcUrl" value="${url}" /> <property name="username" value="${user}" /> <property name="password" value="${password}" /> <property name="minimumIdle" value="5" /> <property name="maximumPoolSize" value="10" /> <property name="connectionTestQuery" value="select 1 from sys.dual" /> <!-- 5분마다 요청 --> <property name="connectionTimeout" value="300000" /> <property name="leakDetectionThreshold" value="300000" /> </bean> <!-- connectionTimeout=30 000 (30초), connectionTimeout=60 000 (60초) 이면 실제 90초 마다 idle connection 이 갱신됨 --> <bean id="dataSource" class="com.zaxxer.hikari.HikariDataSource" destroy-method="close"> <constructor-arg ref="hikariConfig" /> </bean>
HikariCP + MySQL 설정 시
- 출처: https://github.com/brettwooldridge/HikariCP/wiki/MySQL-Configuration
MySQL 권장 설정 일부
댓글 ( 4)
댓글 남기기