Cache
• Cache
- 정의
• 나중에 필요할 수도 있는 무언가를 저장하였다가 신속하게 회수할 수 있는
보관 장소로, 어떤 식으로든 보호되거나 숨겨진다
• 메모리 계층 구조(기본 이론1)
- 데이터를 저장하는 공간의 속도와 용량은 반비례 관계
• 속도가 빠른 메모리일수록 용량이 작음
• 용량이 큰 저장장치는 속도가 느림
• 둘 다 잡기에는 비용이 너무 많이 든다
=> 데이터 저장 공간은 속도와 용량에 따라 특성에 맞게 역할을 나누어 사용한다
- 데이터 저장 공간을 속도 용량 순서대로 쌓으면 마치 피라미드와 같은 형상이 나타난다
(Memory Hierarchy)
• 파레토의 법칙(기본 이론2)
- 이탈리아의 경제학자 빌프레도 파레토가 발견한 현상
- 원인 중 상위 20%가 전체 결과의 80%를 만든다는 법칙
- 2 대 8 법칙이라고도 한다
- 여러 곳에서 관찰할 수 있는 이 법칙
• 인구의 20%가 전체 부의 80%를 가지고 있다
• 잘 팔리는 제품 20%가 매출의 80%를 차지한다
• 많이 쓰이는 단어 20%가 언어 사용빈도의 80%를 차지한다
• 데이터 지역성의 원리(기본 이론3)
- 자주 쓰이는 데이터는 시간적 혹은 공간적으로 한 곳에 몰려 있을 가능성이 높다
• 시간 지역성(Temporal Locality)
예를 들어 for문에서 조건변수(int i = 0;)를 선언했을 때,
해당 변수는 for문이 끝나기 전까지 계속 쓰일 확률이 높은 것
• 공간 지역성(Spatial Locality)
예를 들어 for문에서 어떤 배열에 접근했을 때, 해당 배열이 위치한 메모리 공간의
내용은 for문이 끝나기 전까지 계속 쓰일 확률이 높은 것
for문에서 array[0], array[1], array[2]… 와 같이 배열에 접근할 때,
다음번에는 array[3]에 접근할 확률이 높은 것을 따로 분류하여
순차 지역성(Sequential Locality)이라고 부르기도 한다
• 캐시의 작동 방식
- 원본 데이터(System-of-Record)와는 별개로 자주 쓰이는 데이터(Hot Data)들을
복사해둘 캐시 공간을 마련한다 캐시 공간은 상수 시간[O(1)] 등 낮은 시간 복잡도로
접근 가능한 곳을 주로 사용한다
- 데이터를 달라는 요청이 들어오면, 원본 데이터가 담긴 곳에 접근하기 전에
먼저 캐시 내부부터 찾는다
- 캐시에 원하는 데이터가 없거나(Cache miss) 너무 오래되어 최신성을 잃었으면
(Expiration) 그때서야 원본 데이터가 있는 곳에 접근하여 데이터를 가져온다
이 때 데이터를 가져오면서 캐시에도 해당 데이터를 복사하거나 혹은 갱신한다
- 캐시에 원하는 데이터가 있으면 원본 데이터가 있는 공간에 접근하지 않고
캐시에서 바로 해당 데이터를 제공한다(Cache hit)
- 캐시 공간은 작으므로, 공간이 모자라게 되면 안 쓰는 데이터부터 삭제하여
공간을 확보한다(Eviction)
• 캐시가 쓰이는 사례
- CPU의 캐시 메모리
- 하드디스크, 데이터베이스
- CDN(Content Delivery Network)
- 웹 캐시
- 브라우저 캐시
- Redis
- EHcache
출처 : 우아한Tech(10분 테코톡)
댓글남기기