캐시가 필요한 이유

디스크가 동작하는 것은 매우 느리고 I/O 1회에 많은 시간을 소요하기 때문에 '캐시'를 이용해서 디스크에서 처리하지 않고 메모리에서 처리하는 구조를 가지고 있습니다.

캐시

what?
일반적으로 캐시를 작업장, 작업대 등으로 비유합니다. 일할 때 자주 사용하는 도구나 책을 필요할 때마다 서랍이나 책장에서 꺼내서 사용하고 끝나면 다시 집어넣기 보다 손이 잘 닿는 곳에 두고 필요할 때 바로 쓰는 것과 유사합니다. 자주 사용하는 데이터를 매번 디스크에서 꺼내오지 않고 캐시라고 불리는 메모리에 둠으로써 빠르게 사용할 수 있도록 하는 것입니다. image 서버 프로세스가 원하는 데이터가 버퍼 캐시(데이터 캐시)에 존재하지 않을 경우 (캐시에 히트(hit)하지 않을 경우) 디스크에서 데이터를 읽어오기 때문에 처리 속도가 그만큼 느릴 수 있습니다.

블록 단위 데이터 관리

오라클은 '블록' 단위로 데이터를 관리하며 I/O 단위, 버퍼 캐시 등도 블록 단위로 관리합니다. 블록은 정리용 상자와 비슷합니다. 크기가 작고 양이 많은 물건들을 상자에 담아 보관하는 것처럼 수 바이트에서 수천 바이트 이상의 여러 로우(행)로 존재하는 데이터들을 블록이라는 정리용 상자에 담아 보관합니다. image

한 개의 블록에는 그림처럼 여러 건의 데이터가 보관돼 있어서 한 건만을 디스크에서 읽어오려고 해도 필요한 데이터를 포함하고 있는 블록 전체가 캐시에 보관됩니다. 또한 블록 크기는 2KB, 4KB, 8KB, 16KB, 32KB 중에서 선택할 수 있습니다. 데이터와 캐시의 크기가 커짐에 따라 최근 시스템에서는 8KB를 채용하는 일이 많아졌습니다. 단 크기가 큰 테이블을 시퀀셜 액세스로 읽어 와야 하는 DW(Data Warehouse) 등에는 16KB나 32KB 같은 크기를 선택할 때도 있습니다.