Database

[Database] 버퍼와 캐시의 특징과 차이

리거니 2023. 3. 20. 10:00
Buffer VS Cache


Cache

캐시(Cache)란

처리속도 향상을 위해, 자주 사용하는 데이터나 값들을 캐시 메모리에 임시 저장 [ 데이터를 미리 읽어옴 ]
CPU는 항상 캐시 메모리를 먼저 탐색한다.

 

Buffer

버퍼(Buffer)란

데이터를 한 곳에서 다른 곳으로 전송하는 동안 일시적으로 데이터를 보관하는 메모리 영역
주로 입/출력 프로세스 에 사용됩니다
Dirty Buffer : 버퍼 캐시로부터 변경되었지만 아직 디스크에 기록되지 않아 동기화가 필요한 버퍼 블록

 


예를 들면, 메모리의 속도가 100이고, 하드디스크의 속도를 1이라고 가정 한다고 했을 때, 
이 때 갑자기 어떤 데이터(용량이 50)를 메모리가 하드디스크에서 읽어 오려고 할 경우 속도가 1인 하드디스크가 50인 용량을 읽기 위해서는 시간이 50 걸립니다. 
그런데 50인 용량을 메모리가 받을때는 0.5라는 시간이 걸립니다. 
결국 메모리는 하드디스크가 정보를 다 읽을때까지 모두 49.5라는 시간을 아무일도 못하고 놀게 됩니다. 

그것을 막기 위해서 캐시라는 장치가 생겼습니다.

만약 메모리의 특정영역을 캐시로 정하고 위의 경우에서 읽어올 데이터 50중에 30을 미리 읽어 왔다면, 30은 미리 메모리에 있으니, 20만 더 읽어 오면 됩니다. 
그래서 하드디스크는 20의 시간이 걸리고, 메모리는 19.5라는 시간만 놀게 됩니다. 결국 하드디스크가 2.5배나 빨라진 셈입니다. 


차이점

캐시(Cache)와 버퍼의 공통점은

추가적인 메모리를 소모함으로써 속도차이를 보상함에 있다.

차이점으로는, 버퍼는 일반적으로 캐시에 비해서 처리크기가 크기 때문에, 데이터를 저장할 수없다. 한번의 연산이 끝나면 사용된 데이터는 폐기된다. 이에 반해 캐시(Cache)는 캐시메모리에 해당 데이터를 저장하여 추후에도 계속 사용 할 수있다.

탄생한 목적도 둘은 상이하다. 캐시(Cache)는 어떤 작업의 속도를 증진시키기 위해 탄생했지만, 버퍼는 속도의 증진만을 목적으로 하느것이 아닌, 개별 작업들 간의 협동(무결성, 고속장치의 기다림 등)을 지원하기 위해 존재한다.

 

이러한 특성들로 주로 캐시는 읽기부분에, 버퍼는 쓰기부분에 사용된다.