헤르메스 LIFE

[DataSource] org.apache.commons.dbcp.BasicDataSource Connection Pool 설정 본문

Spring Framework

[DataSource] org.apache.commons.dbcp.BasicDataSource Connection Pool 설정

헤르메스의날개 2012. 2. 23. 14:55
728x90

<bean id="defaultDataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
        <property name="driverClassName" value="${mysql.jdbc.driverClassName}" />
        <property name="url" value="${mysql.jdbc.url}" />
        <property name="username" value="${mysql.jdbc.username}" />
        <property name="password" value="${mysql.jdbc.password}" />
        <property name="initialSize" value="10"/>
        <property name="maxActive" value="30"/>
        <property name="maxIdle" value="15" />
        <property name="minIdle" value="15" />
        <property name="testOnBorrow" value="false" />
        <property name="validationQuery" value="select 1" />
        <property name="timeBetweenEvictionRunsMillis" value="10000" />
        <property name="testWhileIdle" value="true" />  
        <property name="numTestsPerEvictionRun" value="3" />        
        <property name="minEvictableIdleTimeMillis" value="-1" />
    </bean>    

속성 설명
driverClassName  
url  
username  
password  
initialSize 초기에 생성되는 커넥션의 개수
maxActive 커넥션 풀이 제공할 최대 커넥션의 개수
maxWait 풀에 커넥션에 존재하지 않을 때, 커넥션이 다시 풀에 리턴될 때까지 대기시간, 1/1000초 단위, -1일 경우 무한대기
maxIdle 사용되지 않고 풀에 저장될 수 있는 최대 커넥션 개수, 음수일 경우 제한이 없다.
minIdle 사용되지 않고 풀에 저장될 수 있는 최소 커넥션 개수, 음수일 경우 제한이 없다.
testOnBorrow true 일 경우 커넥션 풀에서 커넥션을 가져올 때 커넥션이 유효한지의 여부 검사
testOnReturn true 일 경우 커넥션 풀에서 커넥션을 반환할 때 커넥션이 유효한지의 여부 검사
testWhileIdle true 일 경우 비활성화 커넥션을 추출할 때 커넥션이 유효한지의 여부를 검사해서 유효하지 않은 커넥션은 풀에서 제거
validationQuery  
timeBetweenEvictionRunsMillis 사용되지 않은 커넥션을 추출하는 쓰레드의 실행주기를 지정한다.
양수가 아닌경우 실행되지 않는다.
numTestsPerEvictionRund 사용되지 않는 커넥션을 몇 개 검사할 지 지정
minEvictableIdleTimeMillis 사용되지 않은 커넥션을 추출할 때 이 속성에서 지정한 시간 이상 비활성화 상태인 커넥션만 추출한다.
양수가 아닌 경우 비활성화된 시간으로 풀에서 제건 안됨. 1/1000초 단위
poolPreparedStatements PreparedStatements를 풀링 할 것인지 결정한다.
PreparedStatement란 이처럼 바인드 변수의 사용을 가능케 하기 위해 사용됩니다.
따라서 동일한 문장(위처럼 값만 바뀐다거나 할때)이 여러 번 연속으로 실행되거나 비교적 연속적(라이브러리 캐쉬에 있는
실행계획이 LRU에 의해 메모리에서 삭제되기 직전에 다시 실행되기만 한다면)으로 실행된다면 월등한 성능향상을 얻을 수 있습니다.
그러므로 꼭 사용하도록 설정한다.( true로 설정해준다.)
728x90