캐싱

심채운·2022년 7월 28일
0

cs

목록 보기
2/15

Cache 캐시란?

Cache란 자주 사용하는 데이터나 값을 미리 복사해 놓는 임시 장소를 가리킨다.
프로세서에서 캐시는용량이 작고 속도가 빠른 메모리로, 용량이 더 크지만 훨씬 느린 주 기억 장치에 매번 접근하는것을 피하고자 최근에사용된 정보를 저장하는데 사용이 된다.

Cache에 데이터를 미리 복사해 놓으면 계산이나 접근 시간 없이 더 빠른 속도로 데이터에 접근할 수 있다. 결국 Cache란 반복적으로 데이터를 불러오는 경우에, 지속적으로 DBMS 혹은 서버에 요청하는 것이 아니라 Memory에 데이터를 저장하였다가 불러다 쓰는 것을 의미한다.


사진처럼 프로세서에는 캐시가 2~3개 있는데, 흔히 L1,L2,L3 레벨이라고 부르고 뒤로 갈수록 용량은 크지만 속도는 더 느리다. 가장 큰 캐시는 데이터를 몇 MB 정도 담을 수 있다.

캐싱이 효과적인 이유는 최근에 사용된 정보가 곧 다시 사용될 가능성이 크기 때문이다. 캐시에 정보를 포함하고 있다는 사실은 메모리 작업을 기다리는 데 시간을 덜 쓴다는 의미이다. 캐싱 과정에서는 대개 정보를 블록 단위로 동시에 불러온다.
ex) 단일 바이트에 대한 요청이 들어오면
연속된 메모리 위치를 포함한 블록을 불러온다. 이유 : 인접한 정보라면 곧 사용될 가능성이 높으므로 미리 불러와 두면 필요할 때 캐시에서 바로 꺼내 쓰기 쉽기 때문. 그렇게 되면 근처에 있는 정보를 참조할 때 기다리지 않고 바로 볼 수 있다.

캐싱은 성능을 크게 높이는 경우를 제외하면 사용자에게 거의 드러나지 않는다.
캐싱은 우리가 뭔가를 사용하고 있고 그것을 곧 다시 쓸 가능성이 있거나 근처에 있는 뭔가를 사용할 가능성이 있을 때 언제든지 활용할 수 있는 훨씬 더 일반적인 개념이다.
ex)
1. 프로세서에 있는 여러 개의 누산기는 실행 속도를 높인다는 점에서 일종의 캐시
2. 주 기억장치는 디스크를 보완하는 캐시
3. 메모리와 디스크는 네트워크에서 오는 데이터를 빠르게 꺼낼 수 있다는 점에서 둘 다 캐시

네트워크에서는 멀리 떨어져 있는 서버에서 오는 정보 흐름의 속도를 높이려고 캐시를 사용할 때가 많고, 서버 자체에도 캐시가 있다.

Cache는 아래와 같은 경우에 사용을 고려하면 좋다.

  • 접근 시간에 비히 원래 데이터를 접근하는 시간이 오래 걸리는 경우(서버의 균일한 API 데이터)
  • 반복적으로 동일한 결과를 돌려주는 경우(이미지나 썸네일 등)

웹 브라우저에서 '캐시를 삭제한다' 문장을 본적이 있을 것이다. 브라우저는 어떤 웹페이지에 포함된 이미지나 비교적 용량이 큰 다른 데이터의 로컬 사본을 유지하고 있다. 사용자가 페이지를 재방문했을 때 데이터를 다시 다운로드하는 것보다 로컬 사본을 사용하는 편이 더 빠르기 때문이다. 하지만 캐시 용량이 무한정으로 커질수는 없다보니 브라우저는 새 데이터를 위한 공간을 만들기 위해 오래된 항목부터 조용히 제거한다, 또는 사용자가 캐시 항목 전체를 직접 제거할 수도 있다.

우리도 가끔은 캐시의 효과를 직접 관찰 할 수있다.
큰 프로그램을 실행한 후 디스크에서 로딩이 완료되고 사용할 준비를 마치기까지 걸리는 시간을 측정하고 껏다가 재시작을 하면 보통 두번째 실행했을때의 로딩 시간이 더 짧다. 왜냐하면 프로그램의 명령어가 아직 메모리에 있고, 메모리가 디스크에 대한 캐시로 사용되기 때문. 시간이 흘러 다른 프로그램들을 사용하면서 메모리는 다른 명령어와 데이터로 채워지고, 원래 프로그램은 더 이상 캐싱되지 않는다.

워드, 엑셀 같은 프로그램에 있는 최근에 사용된 파일 목록도 캐싱의 일종이다.
가장 최근에 사용한 파일을 기억하고, 메뉴에 그 이름을 표시해 사용자가 파일을 찾기 위해 검색할 필요가 없게 해준다.

profile
불가능, 그것은 사실이 아니라 하나의 의견일 뿐이다. - 무하마드 알리

0개의 댓글