회고록

하이버네이트 2차캐시 도입 후기...

브리2 2023. 4. 20. 19:27

1. 여태 우리는 그 흔한 redis 도 잘 안쓰고 있었고, 2차캐시 또한 안쓰고 있었다.

2. 처음엔 redis로 자주 호출하는 entity 를 캐싱처리해서 작업하려 했고 적용했다.

3. 눈으로 보기에 캐시 히트율은 높았지만 쿼리 갯수가 비약적으로 줄진 않았다. (select 쿼리 약 20% 줄음)

4. 캐싱된 entity들에 대한 호출 쿼리가 계속 있어서 확인해보니 entity graph 로 가져오는 아이들이 있었다.

5. 해당 graph get 은 ddl이란 명목하에 쓰는곳이 너무 많았기 때문에 지울 수 없었다.

6. 결국 hibernate 2차캐시 쓰기로 결정!.

7. 다만 잘 고려해야할 부분은 메모리 캐시 이기 때문에 db 가 외부에 다른 instance에서 변경되는 경우 캐시 만료 전 까지 서로 정합성이 안맞을 수 있었다.

8. 따라서 트랜젝션 성 table 인 order, payment 는 캐시 대상에서 빠지고 이외에 자주 호출하는 company 관련 table 들만 캐싱 처리 하기로 전격 결정!.

'회고록' 카테고리의 다른 글

spring boot major 버전 업 개발 및 배포에 대한 회고  (1) 2023.04.12