[서버] Cache Invalidation(캐시 무효화)

프로그래밍/서버2020. 9. 28. 17:14

캐쉬는 속도를 빠르게 하기 위해 참 다양한 곳에서 쓰이고 있습니다. CPU만 보더라도.. l1 캐쉬 l2캐쉬 등이 있고 컴퓨터 전체를 보더라고 메모리가 HDD/SSD의 캐쉬 역할을 하죠. 서버에서도 속도 향상을 위해 캐쉬를 사용합니다.

 

캐쉬를 사용하면 메모리의 속도가 HDD/SSD보다 빠르므로 많은 속도 향상을 기대할 수 있습니다. 하지만 이처럼 또 하나의 데이터 복사본?을 사용하면 consistency문제가 생깁니다. HDD/SSD에 있는 db에 변화가 생겼는데 캐쉬에는 그 수정내용이 반영이 안되어 있으면 문제가 되겠죠?

 

이런 상황에는 cache invalidation(캐시 무효화)이라 하여 캐쉬의 값을 갱신해야 합니다.

 

1. Write-through cache(동시기록 캐시)

write-through는 동시 쓰기의 뜻을 가지고 있습니다. 이 뜻이 의미하는대로 어떤 값을 갱신(write)해야 하면 캐쉬(메모리) 뿐만 아니라 HDD/SSD와 같은 저장장치에도 값을 쓰는 것을 말합니다.

메모리 뿐만 아니라 HDD/SSD에도 값을 저장하므로 데이터의 손실이 없으나 매번 HDD/SSD에도 값을 써야하므로 write속도가 상대적으로 느립니다.

2. Write-back cache

write-back chace에서는 어떤 값을 갱신해야 하면 캐시(메모리)에만 먼저 씁니다. HDD/SSD에는 항상 캐시의 수정 내용이 반영되지 않고 특정 시간/조건마다 반영됩니다. 이렇게하면 write에도 빠른 속도를 기대할 수 있습니다. 그러나 HDD/SSD에 바로 값을 갱신하지 않으므로 서버에 문제가 생기면 데이터가 손실될 가능성이 있습니다.

 

3. Write-around cache(No-write allocate 또는 write-no-allocate)

이 policy에선 어떤 데이터를 갱신해야할 때 메모리(캐시)에는 건너뛰고 바로 HDD/SSD에 값을 저장합니다. 그럼 캐시는 언제 쓰냐구요? 캐시는 read요청이 왔을 때 그 값이 캐시에 없으면 HDD/SSD로부터 값을 가져옵니다.

write가 많이 발생하지만 그 값을 다시 읽는 경우가 별로 없을 때 쓰면 좋을 것 같습니다.

 

참고

en.wikipedia.org/wiki/Cache_(computing)

 

Cache (computing) - Wikipedia

From Wikipedia, the free encyclopedia Jump to navigation Jump to search Computing component that transparently stores data so that future requests for that data can be served faster Diagram of a CPU memory cache operation In computing, a cache ( kash,[1] o

en.wikipedia.org

 

작성자

Posted by 드리머즈

관련 글

댓글 영역