IT개념/프로그래밍상식
캐시에 대하여
JongHyun99
2021. 8. 18. 22:42
728x90
캐시
캐시란?
캐시는 cash(현금)이 아니라 cache라고 쓴다. 캐시에는 '숨기는 장소'라는 의미가 있다.
컴퓨터 세계에서는 사용 빈도가 높은 데이터를 고속으로 엑세스할 수 있는 위치에 두는 것을 의미한다.
CPU의 1차, 2차캐시, 저장소 캐시, OS 페이지 캐시, 데이터베이스 버퍼 캐시 등 광범위하게 일컫는다.
캐시는 임시 저장소를 의미한다.
- 일부 데이터를 데이터 출력 위치와 가까운 지점에 일시적으로 저장한다.
- 데이터 재사용을 전제로 한다.
어디에 사용되는가
브라우저 캐시는 웹 브라우저가 접속한 페이지를 캐시하는 것이다.
이를 통해 웹 서버 접속을 줄이고 브라우저 표시를 고속화 할 수 있다.
웹 서버 부하를 줄이는 다른 방법으로는 웹 서버와 클라이언트 사이에 캐시서버를 배치하는 방법이 있다.
요즈음엔 CDN이라는 웹서버가 아닌 다른 웹 콘텐츠 캐시를 배치하는 구조를 이용하기도 한다. (아카마이 등)
정리
캐시는 데이터에 고속으로 액세스하고 부하를 줄일 수 있지만 데이터를 잃을 위험이 있어서 캐시 데이터가 손실돼도 괜찮은 경우에 주로 사용한다.
적합한 시스템
- 참조 빈도가 높은 데이터
몇 번이고 같은 데이터를 참조해야 할 경우 캐시에 배치하자. - 데이터가 손실돼도 문제가 없는 시스템
예를들어 스트리밍 데이터 등은 갱신이 없기 때문에 캐시에 장애가 발생해도 원 데이터를 다시 캐시에 배치하기만 하면 복원이 가능하다. 이런 읽기 전용 데이터에 적합하다.
부적합한 시스템
- 데이터 갱신 빈도가 높은 시스템
이런 경우 갱신 시 마다 캐시해야 해서 바로 엑세스 하는 것과 큰 차이가 없어 서은ㅇ 향상을 기대할 수 없다. - 대량의 데이터에 엑세스하는 시스템
데이터 엑세스 시 수백GB 이상 큰 데이터를 참조하는 경우 캐시 크기도 커지며, 배치하기에도 많은 시간이 걸린다. 예를들어 분석 시스템에서는 캐시를 두는 것은 부적합하다.
주의할 점
- 데이터가 이중 구조로 저장되기 때문에 리소스 소비가 늘어난다.
- 시스템 가동 직후에는 캐시에 데이터가 없기 때문에 원하는 성능이 안나올 수 있다.
- 캐시 계층이 늘어나기 때문에 시스템 성능 문제나 데이터 불일치 문제가 발생할 경우 문제 발생을 야기한 용의자가 늘어난다.
- 데이터가 손실되는 경우를 대비해 복구 순서를 설계 시 확립하여야 한다.
- 갱신 데이터(쓰기 데이터)를 캐시할 때 캐시가 여러개 있으면 갱신된 최신 데이터를 서로 뺏으려는 상태가 발생할 수 있다.