본문 바로가기

[kotlin] JPA 12: Spring Boot에서 2차 캐시 들어가기JPA에서 캐시는 2단계를 걸쳐서 동작한다. 1차 캐시는 영속 컨텍스에 해당하며 세션이 유지될때까지 현재 세션의 모든 엔티티는 영속 컨텍스트 내에서 캐싱된다. 영속 컨텍스트는 트랜잭션 범위에서 유효한데 보통 트랜잭션이 종료되면 영속 컨텍스트도 같이 종료된다. 그렇기 때문에 세션과 영속 컨텍스트의 생명이 동일하다고 할 수 있다. 세션이 종료된 경우 1차 캐시가 사라지기 때문에 애플리케이션 전체에서 보면 동일한 요청을 할 경우 새로 캐싱해서 처리하기 때문에 효율적이지 않다. 결국, 세션에 상관 없이 캐시를 유지 관리하는 2차 캐시가 필요하다. 2차 캐시에 대해서 살펴보자.작성자: http://ospace.tistory.com/ (ospace114@empal.com)2차 캐시애플리케이션 라이프타임에.. 더보기
멀티코어/멀티프로세스 캐쉬 들어가기 멀티코어는 한 프로세스에 여러개의 코드가 있는 CPU이고 멀티프로세스는 물리적으로 CPU가 여러 개가 있다. 물리적으로라는 말도 어색한게 지금은 물리적으로 한 개처럼 보이개 만들기도 하기 때문이다. 그래서 여기서는 특별하게 분리하지 않고 캐쉬 관점에서 다룰려고 한다. 작성자: ospace114@empal.com, http://ospace.tistory.com/ False Sharing cache coherence 문제가 있는데 L2캐쉬는 공유되지만 L1캐쉬는 코어별로 존재한다. 각 코어별로 L1캐쉬에 같은 데이터가 있고, 한 코어가 데이터를 수정한다면 어떻게 될까? 코어에 의해 수정된 데이터가 Write-Back에 의해 먼저 L1캐쉬에 저장되고 캐쉬가 eviction될때에 L2캐쉬에 저장되고, .. 더보기

반응형