<aside>
</aside>
데이터를 효율적으로 빠르게 찾고싶다. 하지만 직접 디스크에서 I/O로 갖고 오기에는 시간과 비용이 든다. 이디야 아르바이트를 할 때 자주 쓰는 음료 소스를 소스통에 소분해두고 냉장고에 큰 소스통을 뒀던 것과 같다. 손님들이 자주 주문하는 음료의 소스를 위주로 소스통에 채워두어 주문마다 냉장고까지 왔다갔다하는 수고를 덜었다.
디스크에 직접 I/O하기 전에 용량은 적지만 빠르게 가지고 올 수 있는 메모리 혹은 접근이 빠른 저장소를 디스크 앞단에 두고 읽는 속도를 향상하는 방법이다.
내가 찾는 데이터가 캐시에 있는 경우 캐시 적중(캐시 히트)라고 한다. 히트율이 높을수록 캐싱 전략이 나에게 맞고 캐싱의 효과를 똑똑히 보는 것이다. 반대로 찾지 못하는 경우는 캐시 실패(캐시 미스)라고 한다.
그럼 ‘디스크 데이터 중 어떤 데이터를 캐시할까?’가 다음 의문이다. 내가 사용할 데이터가 캐시 저장소에 있다면 Best이지만 캐시 저장소에 저장할 수 있는 양은 한정적이기 때문이다. 어떤 데이터를 캐시하고 캐시 저장소가 가득찼다면 어떤 데이터를 제거할지에 대한 전략은 밑에서 설명하겠다.
데이터를 조회/삽입했던 ‘시간’을 기준으로 캐싱하는 전략이다. 캐시가 다 찼다면 가장 오래전에 사용한 데이터를 제거해 공간을 확보한다. 최근에 사용했다면 다시 사용할 확률이 높다는 가정을 한다.
이디야 아르바이트로 가정해보자. 5번의 주문을 받았다. 손님들이 아이스 아메리카노, 아이스티, 흑당티와 같은 인기 메뉴들로만 시켰고 모두 이전에 다른 손님들이 주문했어 소스통에 있다면 5번 모두 냉장고에 왔다갔다하는 비용을 절약한 것이다. 하지만 손님들이 모두 인기 메뉴가 아닌 서로 다른 메뉴를 시켰다면, 냉장고에 왔다갔다하고 소스통에 다시 옮기는 비용만 더 든 것이다.