본문 바로가기

IT관련

오라클 In-memory (인메모리) 기능 소개 (Oracle을 메모리DB로 만들어주는)

Oracle In-memory 기능은 12c 버전부터 제공되는 Oracle의 유료옵션입니다. 메모리(RAM)에 테이블 또는 파티션을 올려놓음으로써 Disk I/O 시간을 제거하여 성능을 크게 개선하고자 하는 기능입니다.

 

 

그럼, 과거에는 Oracle DBMS 가 메모리를 사용하지 않았냐? 그것은 아니고, Buffer Cache 라는 메모리공간에 테이블의 블록들을 올려놓고(캐싱해서) 사용해왔었습니다. 다만, 기존 버퍼캐시에는 테이블/파티션을 통째로 올려놓았던 것이 아니고 일부 블록들만 올려놓았었고, Row Format 으로 되어있는 Disk 에 있는 블록을 그대로 메모리에 로딩해서 캐싱하는 형태였습니다.

 

 

하지만, In-Memory 기능에서는 테이블/파티션을 통째로 올려놓고, Row Format 이 아닌 Column Format 으로 압축해서 저장한다는 것이 다릅니다.

이걸 그림으로 표현한 것이 아래 그림으로, 왼쪽이 Buffer Cache 에 해당하고 오른쪽이 In-memory 에 해당합니다.

 

 

메모리에 Column Format 으로 저장한다는 부분이 별거 아닌것 같지만, 반복되는 데이터를 압축해서 저장하는데 있어서는 아주 효율적인 구조입니다.

예를 들어, 아래와 같은 테이블을 압축한다고 할때, 왼쪽과 같이 Row 단위로 압축을 하게 되면 데이터가 반복될 확률이 적기 때문에 압축률이 안좋게 나올겁니다. 하지만, 오른쪽의 경우는 "성별" 컬럼과 같이 반복되는 데이터가 많은 경우에는 압축률이 높아지게 됩니다.

 

 

압축률이 높아지면, 한정된 자원인 메모리에 더 많은 테이블을 로딩할 수 있을 뿐만 아니라, 메모리에서 데이터를 읽어올때도 Reading 횟수(양)를 줄일 수 있기 때문에 더 빨라지는 효과를 얻을 수 있습니다.

 

 

▶ 오라클 In-memory (인메모리) 기능 사용방법

▶ 오라클 In-memory (인메모리) 관련 유용한 스크립트 모음