복붙노트

[SPRING] 최대 절전 모드와 @ 트랜잭션을위한 스프링 데이터 소스 설정하기

SPRING

최대 절전 모드와 @ 트랜잭션을위한 스프링 데이터 소스 설정하기

이 순간에 @Transactional 주석을 사용하여 DriverManagerDataSource를 사용하여 트랜잭션을 관리합니다. 그러나 모든 트랜잭션은 매우 느린 데, 그 이유는 매번 db에 대한 데이터 소스 열기 및 닫기 연결 때문입니다.

트랜잭션 속도를 높이려면 어떤 데이터 소스를 사용해야합니까?

해결법

  1. ==============================

    1.DriverManagerDataSource는 실제로 연결 풀이 아니므로 테스트 용으로 만 사용해야합니다. Apache Commons DBCP에서 BasicDataSource를 시도해야한다. 같은 것 :

    DriverManagerDataSource는 실제로 연결 풀이 아니므로 테스트 용으로 만 사용해야합니다. Apache Commons DBCP에서 BasicDataSource를 시도해야한다. 같은 것 :

    <bean id="dataSource" destroy-method="close" 
        class="org.apache.commons.dbcp.BasicDataSource">
        <property name="driverClassName" value="${jdbc.driverClassName}"/>
        <property name="url" value="${jdbc.url}"/>
        <property name="username" value="${jdbc.username}"/>
        <property name="password" value="${jdbc.password}"/>
    </bean>
    
  2. ==============================

    2.내 응용 프로그램에서 두 가지 접근 방식을 조합하여 사용하고 있습니다. 첫 번째는 c3p0 연결 풀링이며, chkal과 거의 동일한 솔루션입니다. 두 번째 방법은 Spring을 사용하는 것이다. lazyConnectionDataSourceProxy는 데이터베이스에 접속했을 때만 연결을로드하는 지연로드 프록시를 생성한다. 이것은 매우 유용합니다. 두 번째 레벨 캐시가 있고 캐시 된 데이터와 쿼리 만 읽으면 데이터베이스가 손상되지 않고 연결을 확보 할 필요가 없습니다 (매우 비쌉니다).

    내 응용 프로그램에서 두 가지 접근 방식을 조합하여 사용하고 있습니다. 첫 번째는 c3p0 연결 풀링이며, chkal과 거의 동일한 솔루션입니다. 두 번째 방법은 Spring을 사용하는 것이다. lazyConnectionDataSourceProxy는 데이터베이스에 접속했을 때만 연결을로드하는 지연로드 프록시를 생성한다. 이것은 매우 유용합니다. 두 번째 레벨 캐시가 있고 캐시 된 데이터와 쿼리 만 읽으면 데이터베이스가 손상되지 않고 연결을 확보 할 필요가 없습니다 (매우 비쌉니다).

    <bean name="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
        <property name="driverClass" value="${jdbc.driverClassName}" />
        <property name="jdbcUrl" value="${jdbc.url}" />
        <property name="user" value="${jdbc.username}" />
        <property name="password" value="${jdbc.password}" />
        <!-- Pool properties -->
        <property name="minPoolSize" value="5" />
        <property name="initialPoolSize" value="10" />
        <property name="maxPoolSize" value="50" />
        <property name="maxStatements" value="50" />
        <property name="idleConnectionTestPeriod" value="120" />
        <property name="maxIdleTime" value="1200" />
    
    </bean>
    
    <bean name="lazyConnectionDataSourceProxy" class="org.springframework.jdbc.datasource.LazyConnectionDataSourceProxy">
        <property name="targetDataSource" ref="dataSource" />
    </bean>
    
  3. from https://stackoverflow.com/questions/4190062/configure-spring-datasource-for-hibernate-and-transactional by cc-by-sa and MIT license