이 글에서는 Oracle Database 12c의 핵심 기능 중 하나인 Oracle® In-Memory Advisor(IMA)를 소개하고, 이를 통해 얻을 수 있는 주요 이점을 살펴봅니다. 이 기능은 Oracle Database 12.1.0.2 버전부터 사용할 수 있습니다.
IMA의 주요 이점
- 분석 쿼리(Analytical Query) 처리 속도 향상
- 온라인 트랜잭션 처리(OLTP) 성능 개선
- 애플리케이션 변경 없이 적용 가능
- 데이터베이스 성능 최적화를 위한 DBA의 수작업 감소
In-Memory Advisor가 등장하기 전에는 DBA가 In-Memory Column Store(IMCS)에 배치할 테이블을 직접 식별해야 했습니다. IMA는 데이터베이스의 분석 워크로드를 자동으로 분석하여 추천 보고서를 생성하고, 테이블을 IMCS에 배치하는 SQL 명령어까지 함께 제공함으로써 이러한 수작업을 없애 줍니다.
IMA는 Oracle Database In-Memory 구성 방법에 대한 구체적인 권고 사항을 제공하며, 최대 효과를 얻기 위해 In-Memory에 배치해야 할 오브젝트를 식별한 보고서와 함께 해당 권고 사항을 실행하는 SQL*Plus 스크립트까지 생성해 줍니다.
IMA 설치 패키지
설치 zip 파일과 설치 지침은 My Oracle Support(MOS) 문서 ID 1965343.1에서 확인할 수 있습니다. 설치 스크립트는 데이터베이스 레벨에 IMA를 설치하며, IMA는 Oracle Database 11.2.0.3 버전에서도 실행할 수 있지만 12.1.0.2 이상 버전 사용을 권장합니다.
DBMS_INMEMORY_ADVISOR 패키지는 In-Memory 옵션 적용으로 성능 향상이 기대되는 분석 워크로드에 대한 조언을 제공합니다. Active Session History(ASH)와 Automatic Workload Repository(AWR) 데이터를 분석하여 보고서와 스크립트 파일을 생성하며, 스크립트에는 대상 데이터베이스에서 실행할 SQL이 포함됩니다. 이 스크립트는 권장된 오브젝트들을 제안된 압축 방식과 함께 In-Memory에 배치합니다.
IMA 듀얼 포맷 아키텍처
전통적으로 Oracle Database는 행(row) 형식으로 데이터를 저장합니다. 각 트랜잭션이 새로운 행으로 저장되기 때문에 한 레코드의 모든 컬럼에 빠르게 접근할 수 있어 온라인 트랜잭션 시스템에 적합합니다. 반면 열(column) 형식 데이터베이스는 각 트랜잭션 속성을 별도의 컬럼 구조로 저장하며, 필요한 컬럼만 조회하면 되므로 분석 작업에 이상적입니다.
DML(데이터 조작어) 연산 관점에서 보면 행 형식은 전체 레코드를 한 번의 연산으로 수정할 수 있어 효율적입니다. 그러나 열 형식 테이블에 insert, update, delete 같은 연산을 수행하면 해당 테이블의 전체 컬럼 구조를 변경해야 하므로 행 단위 DML 처리에는 비효율적입니다.
Oracle Database 12c에서는 데이터를 In-Memory 행 형식과 In-Memory 열 형식 두 가지로 동시에 저장할 수 있습니다. 이를 듀얼 포맷 아키텍처(dual-format architecture)라고 하며, 더 나은 성능을 제공합니다. 기존 버퍼 캐시가 행 형식을 유지하고, 새롭게 도입된 In-Memory Column Store가 열 형식을 유지합니다. In-Memory Column Store는 Oracle Database SGA(System Global Area)의 구성 요소입니다.
다음 이미지는 듀얼 포맷 아키텍처를 보여줍니다.

이미지 출처: https://www.doag.org/formes/servlet/DocNavi?action=getFile&did=6770401&key=
수억, 수십억 건의 행을 가진 매우 넓은(wide) 테이블이라도 데이터 웨어하우스 환경에서 극도로 빠른 속도로 스캔하고 필터링할 수 있습니다. 팩트(fact) 테이블의 컬럼과 여러 차원(dimension) 테이블을 놀라운 속도로 조인할 수 있으며, 데이터가 행 우선(row-major) 형식이 아닌 열 형식으로 저장되어 있어 중간에 위치한 불필요한 컬럼 접근이 제거되어 훨씬 빠르게 데이터에 접근할 수 있습니다.
IMA와 OLTP
IMA는 다양한 OLTP 및 데이터 웨어하우스 운영 환경의 쿼리 성능 개선에 활용할 수 있으며, 다음과 같은 핵심 기능을 제공합니다.
- In-Memory 크기 선정 지원
- 주어진 In-Memory 크기에 맞는 테이블, 파티션, 서브파티션 추천
- 워크로드 및 성능 데이터를 활용한 오브젝트 우선순위 지정
- 디스크·메모리 사용량 차이 및 압축 비율 고려
- 워크로드 기반 비용/효용 분석 제공
- 비용(Cost): 다양한 압축 옵션별 예상 메모리 크기 제공
- 효용(Benefit): 워크로드 처리 시 예상 데이터베이스 시간 절감 지표 제공
- In-Memory 영역 적재 계획(population plan) 제공
- 특정 구성에서 효과가 큰 상위 SQL 보고서 제공
- In-Memory 크기를 조정하여 특정 적재 계획 확인 가능
- 권장된 모든 테이블, 파티션, 서브파티션이 포함된 DDL 스크립트 생성
결론
In-Memory 옵션을 활용하면 분석 쿼리와 OLTP 성능을 모두 향상시킬 수 있으며, DBA의 개입을 최소화하면서 데이터베이스 성능을 손쉽게 최적화할 수 있습니다. 비즈니스 관점에서도 실시간 의사결정 개선, 생산성 향상, 경쟁력 강화, 비용 절감이라는 실질적인 이점을 누릴 수 있습니다.
궁금한 점이나 의견이 있다면 피드백 탭을 통해 남겨 주세요.