티스토리 뷰

springboot 2.0 부터 기본 JDBC Connection Pool 로 지정이 된 hikariCP 라는 JDBC Connection Pool 이 있다. 나온지가 꽤 오래 되었지만 매번 쓰던 Spring의 SimpleDriverDataSource 라던지 Commons DBCP 만 사용하다가 springboot에 관심을 가지고 공부하던 도중 hikariCP 를 알게 되었다. 직접 성능 테스트를 해보지는 않았지만 이미 많은 레퍼런스를 가지고 있고 그로인해 검증이 되었고 해서 hikariCP를 적용해 보았다. 

 

 

hikariCP를 사용하기 위해서 가장 먼저 해야 할 일은 라이브러리를 추가해줘야 한다. 

 

pom.xml (maven project)

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

 

hikariCP는 다른 것들과 마찬가지로 xml에서도 설정할 수 있고 properties에서도 설정할수 있고 JAVA config로도 설정할 수 있다. 가장 익숙한 환경에 설정을 하고 사용하면 된다.

 

xml 설정 (eg. application-context.xml)

<bean id="hikariConfig" class="com.zaxxer.hikari.HikariConfig">
	<property name="driverClassName" value="oracle.jdbc.driver.OracleDriver"/>
	<property name="jdbcUrl" value="jdbc:oracle:thin:@ip:port:SID"/>
	<property name="username" value="id"/>
	<property name="password" value="password"/>
</bean>

<bean id="dataSource" class="com.zaxxer.hikari.HikariDataSource" destroy-method="close">
	<constructor-arg ref="hikariConfig" />
</bean>

 

properties 설정 (eg. application.properties)

spring.datasource.type=com.zaxxer.hikari.HikariDataSource
spring.datasource.url=jdbc:oracle:thin:@ip:port:SID
spring.datasource.driver-class-name=oracle.jdbc.driver.OracleDriver
spring.datasource.username=id
spring.datasource.password=password
spring.datasource.hikari.idle-timeout=10000

 

JAVA config 

@Bean(destroyMethod = "close")
public DataSource dataSource(){
    HikariConfig hikariConfig = new HikariConfig();
    hikariConfig.setDriverClassName("oracle.jdbc.driver.OracleDriver");
    hikariConfig.setJdbcUrl("jdbc:oracle:thin:@ip:port:SID"); 
    hikariConfig.setUsername("id");
    hikariConfig.setPassword("password");

    //hikariConfig.setMaximumPoolSize(5);
    //hikariConfig.setConnectionTestQuery("SELECT 1");
    //hikariConfig.setPoolName("springHikariCP");

    HikariDataSource dataSource = new HikariDataSource(hikariConfig);

    return dataSource;
}

 

이렇게 기존의 datasource를 만들듯이 비슷한 방법으로 만들면 된다. 위와 같이 가장 기본으로 구성하고 was를 기동하면 다음과 같은 로그가 쭉 나오는걸 볼수 있다. (debug level)

[DefaultListableBeanFactory.createBean:line485] - Finished creating instance of bean 'hikariConfig'
[HikariConfig.logConfiguration:line1020] - HikariPool-1 - configuration:
[HikariConfig.logConfiguration:line1052] - allowPoolSuspension.............false
[HikariConfig.logConfiguration:line1052] - autoCommit......................true
[HikariConfig.logConfiguration:line1052] - catalog.........................none
[HikariConfig.logConfiguration:line1052] - connectionInitSql...............none
[HikariConfig.logConfiguration:line1052] - connectionTestQuery.............none
[HikariConfig.logConfiguration:line1052] - connectionTimeout...............30000
[HikariConfig.logConfiguration:line1052] - dataSource......................none
[HikariConfig.logConfiguration:line1052] - dataSourceClassName.............none
[HikariConfig.logConfiguration:line1052] - dataSourceJNDI..................none
[HikariConfig.logConfiguration:line1052] - dataSourceProperties............{password=<masked>}
[HikariConfig.logConfiguration:line1052] - driverClassName................."oracle.jdbc.driver.OracleDriver"
[HikariConfig.logConfiguration:line1052] - healthCheckProperties...........{}
[HikariConfig.logConfiguration:line1052] - healthCheckRegistry.............none
[HikariConfig.logConfiguration:line1052] - idleTimeout.....................600000
[HikariConfig.logConfiguration:line1052] - initializationFailTimeout.......1
[HikariConfig.logConfiguration:line1052] - isolateInternalQueries..........false
[HikariConfig.logConfiguration:line1052] - jdbcUrl.........................jdbc:oracle:thin:@ip:port:SID
[HikariConfig.logConfiguration:line1052] - leakDetectionThreshold..........0
[HikariConfig.logConfiguration:line1052] - maxLifetime.....................1800000
[HikariConfig.logConfiguration:line1052] - maximumPoolSize.................10
[HikariConfig.logConfiguration:line1052] - metricRegistry..................none
[HikariConfig.logConfiguration:line1052] - metricsTrackerFactory...........none
[HikariConfig.logConfiguration:line1052] - minimumIdle.....................10
[HikariConfig.logConfiguration:line1052] - password........................<masked>
[HikariConfig.logConfiguration:line1052] - poolName........................"HikariPool-1"
[HikariConfig.logConfiguration:line1052] - readOnly........................false
[HikariConfig.logConfiguration:line1052] - registerMbeans..................false
[HikariConfig.logConfiguration:line1052] - scheduledExecutor...............none
[HikariConfig.logConfiguration:line1052] - schema..........................none
[HikariConfig.logConfiguration:line1052] - threadFactory...................internal
[HikariConfig.logConfiguration:line1052] - transactionIsolation............default
[HikariConfig.logConfiguration:line1052] - username........................"id"
[HikariConfig.logConfiguration:line1052] - validationTimeout...............5000
[HikariDataSource.<init>:line80] - HikariPool-1 - Starting...

 

hikariCP의 많은 property 가 있는데 이것들을 설정하지 않았을 경우에는 위와 같이 나오고 변경시키고 싶다면 위의 값을 참고하여 property를 추가하여 변경하면 된다. 

댓글
최근에 올라온 글
최근에 달린 댓글
«   2024/12   »
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