티스토리 뷰

DB

[MyBatis] MyBatis 캐시에 대해 알아보기(2)

강씨아저씨 2016. 4. 24. 21:28

지난번 포스팅(http://idea-sketch.tistory.com/30)에 이어서 이번에는 Second level cache 이다. 


- Second level cache 

- Second level cache 는 Local cache 와는 다르게 끄고 킬 수 있다. cache를 키는 방법은 Config 설정하는 곳에서 cacheEnabled 를 TRUE로 설정해주면 된다. 하지만 이설정만 켰다고해서 자동으로 캐싱이 되지는 않는다. 이 다음 해줘야 할 작업은 MyBatis 에서 사용하는 Mapper에 Cache 관련 설정을 해줘야한다.

mybatis-config.xml

 

xxxMapper.xml

-Mapper에 <cache /> 설정을 안해주면 해당 Mapper에서 정의된 Statement는 캐싱이 되지 않는다. 

Size

size는 Mapper내의  모든 Statement가 공유하는 사이즈이다. 

- 하나의 Mapper에 서로다른 select가 2개 size가 10이면 mapper내에서 select+parameter 조합으로 총 10개의 쿼리결과를 캐싱하게된다. 

eviction 

eviction 은 캐시 알고리즘으로 FIFO, LRU, SOFT, WEAK가 있다. 알고리즘은 캐시 용도에 맞게 선택해서 사용하면 된다. 

flushInterval

flushInterval 은 양수로 셋팅할 수 있고, 밀리세컨드 단위이다.


<cache/> 설정후 select 안에 useCache 옵션을 True로 설정해주면 해당 Statement의 결과가 캐시된다. 


기타 자세한 내용이 궁금하면 Mybatis의 User guide를 참조하면 되겠다.


기타로 Local cache와 Second level cache의 차이보면

Local cache 는 Session의 범위내에서 혹은 Statement 범위내에서 캐시사용 여부를 조정하는데

Second level cache는 Session 범위 밖에서의 캐시사용 여부를 조정한다. 

즉. Local cache는 Statement 실행후 Commit이 되면 캐시를 지우는데 반해 Second level cache는 commit을 해도

캐시데이터가 살아있다. 

누군가에게는 작은도움이 되었기를 바라면서 오늘의 포스팅 끝~ 

댓글