가까이 두고 빨리 쓰기, 캐시
자주 보는 책을 매번 먼 창고까지 가서 꺼낸다고 해봐요. 오갈 때마다 한참 걸리죠. 그런데 책상 위에 사본을 한 권 둔다면? 다음부터는 손만 뻗으면 끝이에요. 자주 쓰는 걸 가까운 곳에 사본으로 두는 이 방법이 캐시예요.
먼 창고는 오가기 느려요
앞에서 데이터베이스가
색인으로 바로 점프해 찾는 걸 배웠어요.
그런데 찾은 다음에도
데이터를 어딘가에서 꺼내 와야 해요.
그 저장소가 멀리 있다면 어떨까요?
오가는 길이 길어 한 번 꺼낼 때마다
시간이 꽤 걸려요.
게다가 같은 걸 또 봐야 할 때
다시 그 먼 길을 가야 하죠.
데이터를 눌러 먼 창고에서 꺼내봐요. 경로가 길어 오가는 데 한참 걸려요.
한 번 꺼내는 데 길이 멀었죠.
한두 번이면 참을 만해요.
하지만 같은 데이터를
하루에 수백 번 봐야 한다면요?
그 먼 길을 수백 번 오가야 해요.
생각만 해도 답답하죠.
자주 보는 거라면
매번 멀리 갈 필요가 있을까요?
가까이 사본을 한 부 둬요
방법은 뜻밖에 간단해요.
자주 보는 데이터를
먼 창고에서 한 번 꺼낸 다음
가까운 곳에 사본을 한 부 둬요.
이 가까운 보관함을 캐시라고 불러요.
다음에 같은 걸 찾을 땐
먼 창고까지 안 가도 돼요.
바로 옆 캐시에서 짧은 길로
금방 꺼내면 되니까요.
데이터를 눌러 가까운 캐시에 사본을 복사해 둬요. 비어 있던 캐시가 채워져요.
가까운 캐시에 사본이 생겼죠.
이제 같은 데이터를 또 찾으면
먼 창고는 잊어도 돼요.
캐시에서 짧은 길로 바로 꺼내니까요.
그런데 한 가지 챙길 게 있어요.
찾는 게 캐시에 있을 때와
없을 때는 일이 달라져요.
그 둘을 나눠서 살펴봐요.
적중과 빗나감
찾을 때 두 갈래가 있어요.
찾는 게 캐시에 이미 있으면
짧은 길로 곧장 꺼내요.
이걸 적중이라고 불러요. 빠르죠.
찾는 게 캐시에 없으면
별수 없이 먼 창고까지 가야 해요.
이건 빗나감이라고 불러요. 느리죠.
빗나갔을 땐 가져온 김에
사본을 캐시에 남겨 둬요.
그러면 다음엔 적중이 돼요.
요청을 눌러봐요. 캐시에 있으면 짧은 길로 적중, 없으면 먼 길로 빗나감 뒤 캐시에 사본을 남겨요.
처음엔 빗나가 느렸지만
사본을 남긴 뒤로는
같은 요청이 적중해 빨라졌죠.
자주 보는 것일수록
적중이 늘어 평균이 빨라져요.
캐시가 이래서 든든해요.
그런데 한 가지 골치 아픈 게 있어요.
먼 창고의 원본이 바뀌면
캐시의 사본은 어떻게 될까요?
캐시가 옛것이 될 때
캐시는 사본일 뿐이에요.
먼 창고의 원본이 바뀌어도
캐시는 그걸 모르고
예전에 받은 옛 사본을 그대로 갖고 있어요.
그러면 적중은 빠르지만
내주는 값이 옛것일 수 있어요.
이걸 캐시가 오래됐다고 해요.
빠른 대신 옛 값을 내줄 위험,
이게 캐시의 그늘이에요.
어떻게 막을까요?
원본을 눌러 값을 바꿔봐요. 캐시는 옛값 그대로예요. 캐시를 새로 채우거나 버리면 다시 맞아져요.
원본을 바꾸자 캐시가 어긋났죠.
막는 길은 크게 둘이에요.
하나는 원본이 바뀔 때
캐시를 새 값으로 다시 채우는 거예요.
다른 하나는 사본에 기한을 둬서
일정 시간이 지나면 버리는 거예요.
버려진 자리는 다음 빗나감 때
새 사본으로 다시 채워져요.
어느 쪽이든 옛 값을 줄이고
빠른 적중은 살리는 균형이에요.
정리해볼까요
한 줄로 모으면 이래요.
먼 저장소는 오가는 길이 길어 느려요.
자주 쓰는 건 가까이 사본을 둬요.
그게 캐시예요.
찾는 게 캐시에 있으면 적중이라 빠르고,
없으면 빗나감이라 먼 곳까지 가요.
빗나간 뒤엔 사본을 남겨 다음을 대비해요.
원본이 바뀌면 캐시는 옛것이 되니
새로 채우거나 버려서 막아요.
가까이 두고 빨리 쓰기, 그게 캐시예요.
핵심을 차례로 눌러 되짚어봐요. (먼 곳은 느려요 → 가까이 사본 → 적중과 빗나감 → 원본 바뀌면 옛것)
이제 가까이 사본을 둬
같은 걸 다시 빨리 쓰는 방법을 알게 됐어요.
매번 먼 길을 가던 답답함이
사본 한 부로 시원하게 풀렸죠.
빠름을 얻은 만큼 옛것을 챙기는
이 균형 감각이 데이터를 다루는 힘이에요.
캐시는 컴퓨터 곳곳에 숨어 있어요.
다음엔 또 어디에서 이 사본의 지혜가
쓰이는지 함께 이어서 살펴봐요.