🧺 캐시란?
- 자주 사용하는 데이터나 값을 미리 복사해 놓은 임시 장소
- 미리 복사해 놓기 때문에 계산이나 접근 시간 없이 더욱 빠른 속도로 데이터에 접근 가능
- 저장 공간이 작고 비용이 비싼 대신 빠른 성능을 제공한다.
- 비용이 비싸기 때문에 다음과 같은 경우에 캐시를 사용하는 것을 고려하는 것이 좋다.
- 접근 시간에 비해 원래 데이터를 접근하는 시간이 오래 걸리는 경우
- 반복적으로 동일한 결과를 돌려주는 경우
- 캐시의 궁극적인 목적은 DBMS의 부하를 줄이고, 성능을 높이기 위함이다.
왜 캐시가 성능을 높일까?
- 대부분의 요청이 시스템 리소스의 대부분을 사용한다는 법칙이 존재한다.
Long Tail 법칙
- 시스템 리소스를 사용하는 기능에 캐시를 사용하면 리소스의 사용량을 줄일 수 있기 때문에 성능이 향상될 수 있는 것이다.
Local vs Global
Local
- 로컬 장비 내에서만 사용되는 캐시로, 로컬 장비의 리소스를 사용하는 것이 특징이다.
- 로컬에서만 작동하기 때문에 속도가 빠르다.
- 로컬에서만 작동하기 때문에 다른 서버와 데이터 공유가 어렵다.
Global
- 여러 서버에서 캐시 서버에 접근하여 사용하는 캐시로, 분산된 서버에서 데이터를 저장하고 조회할 수 있다는 것이 특징이다.
- 네트워크를 통해 데이터를 가져오기 때문에 로컬 캐시에 비해 속도가 느리다.
- 별도의 캐시 서버를 사용하기 때문에 서버 간의 데이터 공유가 쉽다.
🛒 캐시를 어떻게 사용하면 좋을까?
- 앞서 말했듯이 캐시는 비용이 비싸기 때문에 잘 사용하는 것이 중요하다.
- 캐시 서버에 원하는 데이터가 있는 경우
cache hit
, 원하는 데이터가 없어 DB에서 찾아와야 하는 경우 cache miss
라고 한다.
- cache miss 가 자주 일어난다면 메모리에 자주 접근하게 된다는 것이므로, 캐시 전략을 변경함을 고려해야 한다.
- 캐시를 효율적으로 사용하기 위해서는 지역성 개념을 고려햐애 한다.
시간적 지역성
- 특정 데이터에 한번 접근해서 가져온 경우, 그 데이터가 가까운 미래에 또 한번 접근할 가능성이 높은 것을 말한다.
- 캐시에 저장해두면 분명 빠른 시간 내에 해당 데이터에 접근할 것이기 때문에 메모리를 접근할 필요가 없어지게 할 수 있다.
- 즉, 반복적으로 사용되는 데이터가 많을수록 높은 효율을 낼 수 있다.
공간적 지역성
- 특정 데이터와 가까운 주소가 순서대로 접근되었을 경우 공간적 지역성이라고 한다.
- 한번 데이터를 가져올 때 가까운 주소의 데이터를 함께 가져와 메모리의 접근을 줄이는 것이다.
- 만약 데이터가 여기저기 흩어져 있다면 데이터를 가져오기 위해 메모리에 접근하는 횟수가 많아지므로 효율성이 떨어지게 된다.
이번에는 캐시가 무엇이고 캐시를 사용할 때 고려해야 할 것이 무엇인지를 알아보았습니다 ! 🤩 다음에는 캐시를 실제로 사용할 때 어떤 전략을 선택할 수 있는지 전략의 종류에 대해 알아보겠습니다 !! 🥳
참고
cash? cache? 캐시란 무엇인가
[Server] Cache(캐시)란?