본문 바로가기
Programming/MyBatis

iBATIS Cache 에 대하여

by d-e-v-j 2024. 12. 3.
반응형

 

iBATIS는  ORM(Object-Relational Mapping) 도구로, SQL Mapper 방식으로 애플리케이션과 Database 를 연결한다. iBATIS는 성능 최적화를 위해 캐싱(Cache) 기능을 제공한다. 캐싱을 활용하면 Database에 대한 불필요한 요청을 줄이고 애플리케이션 성능을 개선할 수 있다. iBATIS의 캐싱 매커니즘, 설정 방법들을 알아보자.

 

1. iBATIS의 캐시(Cache)

캐시는 자주 사용하는 데이터를 메모리에 저장하여 데이터베이스를 다시 조회하지 않고도 빠르게 데이터를 제공하는 기술이다. iBATIS에서는 두 가지 수준의 캐시가 있다.

  • 1차 캐시(Session Level Cache) : 동일한 SqlSession 내에서만 유효한 캐시로 SqlSession이 종료되면 캐시도 사라진다.
  • 2차 캐시(Application Level Cache): SqlSession 범위를 넘어 애플리케이션 레벨에서 공유되는 캐시이다. iBATIS 설정 파일에서 명시적을 정의하여 사용할 수 있다.

 

2. iBATIS 캐시 설정 방법

2차 캐시 활성화

iBATIS의 캐싱은 SQL Map 파일에서 <cacheModel> 태그를 사용하여 설정 할 수 있다.

  • id: 캐시 모델의 고유 ID
  • type: 캐싱 전략 결정
  • LRU(Least Recently Used): 가장 오래된 데이터부터 제거
  • FIFO (First In First Out): 가장 먼저 추가된 데이터부터 제거
  • SOFT: 소프트 레퍼런스를 사용하여 메모리가 부족할 때 캐시 해제
  • WEAK: 약한 참조를 사용하여 GC가 필요할 때 캐시 해제
  • size: 캐시 저장 공간 크기
  • flushInterval: 캐시 갱신 주기
  • readOnly: 읽기 전용 설정 여부
<cacheModel id="defaultCache" type="LRU">
    <property name="size" value="1000" /> <!-- 캐시 최대 저장 객체 수 -->
    <property name="flushInterval" value="60000" /> <!-- 캐시 갱신 간격 (ms) -->
    <property name="readOnly" value="true" /> <!-- 읽기 전용 캐시 여부 -->
</cacheModel>

 

쿼리와 캐시 연결

<select> 쿼리에 <cachModel>을 연결하면, 해당 쿼리의 결과가 캐싱된다.

<select id="getUserById" parameterClass="int" resultClass="User" cacheModel="defaultCache">
    SELECT * FROM users WHERE id = #value#
</select>

 

 

3. 캐싱 전략의 장단점

장점

  • 성능 개선: 동일한 쿼리에 대해 데이터베이스를 여러 번 호출하지 않으므로 성능이 향상된다.
  • DB 부하 감소: 캐시를 사용하면 데이터베이스 서버의 부하가 줄어든다
  • 반응 속도 향상: 메모리에서 데이터를 조회하므로 데이터베이스를 직접호출하는 것보다 빠르다.

단점

  • 데이터 동기화 문제: 데이터베이스의 데이터가 변경되어도 캐시에 즉시 반영되지 않을 수 있다.
  • 메모리 사용 증가: 캐시 데이터가 많아질수록 애플리케이션 메모리 사용량이 증가한다.
  • 적용 범위 한정: 캐시는 주로 읽기 작업에 유리하며, 잦은 쓰기 작업이 필요한 경우 오히려 비효율 적일 수 있다.

 

4. 캐시 사용 시 주의점

  • 데이터 동기화 관리: 캐시된 데이터가 오래되면 일관성 문제가 발생할 수 있으므로, 적절한 갱신 주기를 설정해야 한다.
  • 읽기 전용 설정: 캐시를 읽기 전용으로 설정하면 데이터 변경이 없는 조회 작업에 적합하다.
  • 적절한 크기 설정: 캐시 크기를 과도하게 설정하면 메모리가 부족해질 수 있으므로 적절한 size 값을 설정해야 한다
  • 테스트 및 모니터링:  캐시 설정 후 실제 애플리케이션 환경에서 성능을 테스트하고 모니터링하여 캐시 설정이 적절한지 확인해야 한다.
728x90
반응형
LIST

'Programming > MyBatis' 카테고리의 다른 글

MyBatis 로 대규모 데이터 처리  (0) 2024.11.18
MyBatis란 무엇인가?  (0) 2024.09.10