프로그래밍/iBatis
ibatis cacheModel 테스트
ismydream
2009. 12. 13. 15:01
cacheModel 사용에 의한 성능향상을 파악해보기 위해 아래와 같은 테스트를 실시하였다.
<cacheModel id="person-cache" type="LRU"> <flushInterval hours="24"/> <property name="size" value="100"/> </cacheModel>
위 코드는 ibatis Person.xml 설정된 cacheModel 설정이다.
그리고 테스트시 <SqlMapConfig> 내 <settings> 속성중 cacheModelEnabled 속성은 true 이어야 한다.
cacheModel 의 설정 및 적용 방법은 ibatis 매뉴얼을 참고...
Example ex = new Example(); // ex.insertPerson(); Person person = null; long start = System.currentTimeMillis(); for( int i=0; i < 1000; i++) { person = ex.getPerson(1); System.out.println( person.getId()); } System.out.println( System.currentTimeMillis() - start);
위 코드는 ibatis 튜토리얼에 나와 있는 예제를 대상으로 테스트 하였다.
단순하게 db 에 저장된 데이터를 1000 번 가져오는 테스트이다.
테스트 결과 cacheModel 을 사용했을때 성능향상을 가져온다는 결과를 보여줬다. 그것도 많이....
[결과]
cacheModel 미적용 : 7558
cacheModel 적용 : 1366
거의 6배 정도의 향상을 보여줬다.
테스트 도중 알게된 사실인데 cacheModel 을 적용하게 되면 resultObjectFactory 가 호출되지 않는다.
결과적으로 ibatis 에 resultObjectFactory 가 설정되어 있을 경우 ibatis 는 resultObjectFactory 가 리턴한 객체를 캐시하는 것으로 보인다.
물론 실제 적용에서는 저렇게 1000번을 가져오는 사례는 존재하지 않겠지만 ibatis 를 적용하면서 cacheModel 을 사용하는것도 좋을 거라고 생각한다.