https://www.youtube.com/watch?v=tVZ15cCRAyE 

목차

  • 1. 캐시란
  • 2. 캐시사용이유
  • 3. 캐시 전략패턴
  • 4. 캐시 사용시 주의사항

 

  • 1. 캐시란
    • 데이터나 값을 미리 복사해놓은 임시저장소이다.
    • 대표적인 예시로 Dynamic Programming 도 캐시를 사용한 것이라 볼 수 있다.
    • 이전의 역할을 저장할떄 캐시로 사용한다.
    • JPA 의 Persistent Context도 1차 캐시에서 데이터를 가져와서 성능적인 이점을 사용한다.
  • 2. 캐시사용이유
    • 파레토의 법칙 : 많은 성과에서 80% 의 결과가 20%의 원인에서 나온다.
      • 캐시에 자주 사용되는 약 20%의 데이터를 미리 캐시해놓는다면 효과적인 성능향상을 나타내게 할 수 있다.
    • 데이터의 지역성
      • 공간적 지역성
        • 배열에 있다고 가정하자.
        • 이 하나의 배열의 한곳에 참조를 하였을떄 와 인접한 주소의 내용이 다시 참조되는 특성이다. 
      • 시간적 지역성
      • for(int i=0;i<num;i++){
        	for(int j=0;j<num;j++){
            	cache[i][j] += 1;
            }
        }​
        • 위의 코드에서 i 변수와 j 변수의 사용되었던 데이터가 빠른 시일 내에 다시 사용될 가능성이 높다.
  • 3. 캐시 전략 패턴
    • 1. Cache Hit : 캐시에 데이터가 존재
    • 2. Cache Miss : 캐시에 데이터가 존재하지않아 DB에서 가져온다.
    • 캐시의 읽기전략 ( LookAside 패턴 , Read Through 패턴 )
      • LookAside 패턴 : 캐시의 데이터가 없을때 옆(곁) (DB)를 조회하여 읽어오는 전략이다. ( 캐시는 Server와만 소통한다. )
        • 장점 : 캐시에 문제가 생기는 경우 DB로 요청을 위임한다
        • 단점 : 캐시, DB의 데이터 정합성 유지가 어렵다. 첫 조회 시 DB 과부하가 발생한다.
      • Read Through 패턴 : 항상 캐시를 통해서 읽는다. (캐시가 직접 DB에서 데이터를 가져온다.)
        • 장점 : 캐시, DB 간의 데이터 정합성 보장. 캐시를 통해서 DB와 소통하기에.
        • 단점 : 캐시가 죽으면 애플리케이션에 문제 발생
    • 캐시의 쓰기전략 ( Write Around 패턴,  Write Back 패턴, Write Through 패턴 )
      • Write Around 패턴 : 캐시를 우회하여 직접 쓴다.
        • 장점 : 성능이 좋음. 빠름, DB에 바로 쓰기 때문에 빠르다. 불필요한 데이터가 캐시에 올리지않는다.  캐시를 거쳐서 쓰지않기에 빠른것이다.
        • 단점 : 캐시, DB의 데이터 정합성 유지가 어려움
      • Write Back 패턴 : 캐시에 데이터를 미리 한꺼번에 써놓고 나중에 DB에 쓰기 작업을 한다. 이떄 Scheduling을 사용한다.
        • 장점 : 쓰기 횟수 비용을 줄일 수 있다. ( 원래 많은 양의 데이터를 쓰게 되면 insert문이 여러개놓아서 성능 오류가 날 수 있는데 Bulk Insert로 성능을 챙길 수 있다. )
        • 단점 : 캐시의 데이터 유실 문제 (캐시가 죽을경우 데이터가 유실가능성있다.)
      • Write Through 패턴 : 항상 캐시를 거쳐서 쓴다.
        • 장점 : 데이터 정합성이 보장된다.
        • 단점 : 두번의 쓰기가 항상 진행되기 때문에 성능을 고려해야한다.
  • 캐시 사용시 주의사항
    • 1. 자주 사용되면서 변경이 되지 않는 데이터
    • 2. 유실되어도 크게 문제가 없는 데이터
    • 3. 데이터베이스와 함께 사용할때 데이터 정합성 문제를 고려한다.

 

  •  

+ Recent posts