IMCS 설정

In-Memory Column Store(IMCS) 기능 활성화 및 비활성 방법과 오브젝트별 IMCS 기능을 설정하는 방법에 대해 설명합니다.

IMCS 기능 활성화 및 비활성화

In-Memory Column Store 기능을 활성화 및 비활성화 하기 위해서는 INMEMORY_SIZE라는 파라미터의 값을 변경해야 합니다.

INMEMORY_SIZE 파라미터

INMEMORY_SIZE 파라미터는 기본값이 0이며, INMEMORY_SIZE 파라미터 값이 0일 때는 In-Memory Column Store 기능이 비활성화된 상태입니다. In-Memory Column Store 기능을 활성화시키기 위해서는 INMEMORY_SIZE 파라미터 값을 100M 이상의 값으로 설정 후 데이터베이스를 기동해주어야 합니다.

INMEMORY_SIZE 파라미터는 동적으로 변경할 수 없으며, 변경을 위해서는 데이터베이스 재기동이 필요합니다. INMEMORY_SIZE 파라미터의 최댓값은 (TOTAL_SHM_SIZE - _MIN_SHARED_POOL_SIZE)입니다.

또한 INMEMORY_SIZE 파라미터 설정을 위한 권장 설정은 아래와 같습니다.

INMEMORY_SIZE 파라미터를 Y로 설정한다면 다음과 같은 다음과 같은 파라미터 설정이 권장됩니다.

1) TOTAL_SHM_SIZE
- 기존에 사용하던 값에 Y를 더한 값으로 설정
2) DB_CACHE_SIZE
- single 환경인 경우: (TOTAL_SHM_SIZE - Y) * (2/3)
- TAC 환경인 경우 : (TOTAL_SHM_SIZE - Y) / 2

예를 들어, 기존에 TOTAL_SHM_SIZE를 100GB로 설정하여 DB를 구성하고 있었을 때
INMEMORY_SIZE로 30GB를 추가로 설정하려고 한다면,
TOTAL_SHM_SIZE를 기존 값에서 30GB를 더한 130GB으로 설정하는 것을 권장하며
DB_CACHE_SIZE는 single 환경인 경우 (130 - 30) * (2/3) = 66GB, 
TAC 환경인 경우 (130 - 30) / 2 = 50GB로 설정하는 것을 권장합니다.
  1. INMEMORY_SIZE 파라미터 설정 변경 설정파일(tip 파일)에 INMEMORY_SIZE 를 변경합니다.

INMEMORY_SIZE = 30GB
  1. 데이터베이스 기동 종료

  2. 데이터베이스 재기동

IMCS 기능 활성화

In-Memory Column Store 기능 활성화를 위해서는 데이터베이스 재기동이 필요합니다.

  1. INMEMORY_SIZE 파라미터 설정 데이터베이스 기동 전 설정파일(tip 파일)에 INMEMORY_SIZE를 100M 이상의 값으로 설정해줍니다.

INMEMORY_SIZE = 100M
  1. 데이터베이스 기동 중이라면 데이터베이스 기동 종료

  2. 데이터베이스 기동

IMCS 기능 비활성화

In-Memory Column Store 기능 비활성화를 위해서는 데이터베이스 재기동이 필요합니다.

  1. INMEMORY_SIZE 파라미터 설정 데이터베이스 기동 전 설정파일(tip 파일)에 INMEMORY_SIZE를 0으로 설정하거나 INMEMORY_SIZE 파라미터를 삭제합니다.

INMEMORY_SIZE = 0
#INMEMORY_SIZE = 500M
  1. 데이터베이스 기동 종료

  2. 데이터베이스 재기동


오브젝트별 IMCS 기능 활성화

본 절에서는 오브젝트별 In-Memory Column Store 기능 활성화 및 비활성화 방법과 priority, compression 옵션에 대해 설명합니다.

In-Memory Population

In-Memory Population(이하 population)이란 데이터베이스에서 디스크로부터 row-format 데이터를 읽어 columnar-format으로 변경 후 In-Memory Column Store에 적재하는 것입니다. 테이블, 파티션, 서브파티션만 population이 가능합니다.

In-Memory Population 동작

옵션별 priority 옵션 설정에 따라 데이터베이스 기동 또는 In-Memory 오브젝트에 접근하는 경우 population이 가능합니다.

In-Memory Population 우선순위

INMEMORY PRIORITY 절이 포함된 DDL 구문으로 population의 우선순위를 설정할 수 있습니다.

우선순위의 설정은 table, partition, subpartition에 대해 가능하며 column별로 우선순위 설정은 불가능합니다. 오브젝트에 inmemory 옵션을 설정하는 것은 population의 대상이 되는 것이지, 그 즉시 population 되는 것은 아니라는 점에 유념합니다.

참고

Segment의 크기가 64KB 이하라면 해당 segment는 population 되지 않습니다. 따라서 inmemory 옵션 이 설정되어 있더라도 population이 되지 않는 오브젝트가 존재할 수 있습니다.

우선순위에 따른 population 동작

동작
설명

On-demand population

INMEMORY PRIORITY 옵션의 기본값은 NONE이다. 이 경우 해당 오 브젝트에 대해 inmemory scan을 통해 접근하였을 경우만 population이 된다. 오브젝트에 대해 접근이 없었거나, index scan, table full scan을 통해 접근이 되었을 경우 population이 되지 않는다.

Priority-based population

INMEMORY PRIORITY 옵션의 값이 NONE 이외의 값으로 설정되었을 경우, 오브젝트에 대한 접근이 없어도 population이 된다. Priority level 에 따라서 level이 높은 순으로 population시키며 priority level이 같을 경우 population의 순서는 보장할 수 없다. In-Memory Column Store의 공간이 부족할 경우 더 이상 population시키지 않는다.

PRIORITY 옵션별 동작

옵션
설명

PRIORITY NONE

오브젝트 대해 접근시에만 population을 한다.

PRIORITY LOW

오브젝트에 대해 접근과는 무관하게 population을 한다. 다음 priority level의 population이 모두 완료된 후 population이 진행된다.

  • MEDIUM

  • HIGH

  • CRITICAL

PRIORITY MEDIUM

오브젝트에 대해 접근과는 무관하게 population을 한다.

다음 priority level의 population이 모두 완료된 후 population이 진행된다.

  • HIGH

  • CRITICAL

PRIORITY HIGH

오브젝트에 대해 접근과는 무관하게 population을 한다.

다음 priority level의 population이 모두 완료된 후 population이 진행된다.

– CRITICAL

PRIORITY CRITICAL

오브젝트에 대해 접근과는 무관하게 population을 한다. 최우선으로

population이 진행된다.

PRIORITY Option 설정 예시

  • CREATE TABLE 구문

CREATE TABLE inmemory_test_priority 
        ( id	NUMBER(5) PRIMARY KEY,
            test_column VARCHAR2(15)) 
        INMEMORY PRIORITY HIGH;

  • ALTER TABLE 구문

ALTER TABLE inmemory_test_priority INMEMORY PRIORITY HIGH;

In-Memory Population 제어

DDL 구문의 INMEMORY 절을 이용하여 테이블 스페이스, 테이블, 파티션, 서브파티션에 INMEMORY 옵션을 설정할 수 있습니다.

INMEMORY

INMEMORY 절은 기본적으로 segment 단위로만 설정할 수 있으며, column 단위로 지정할 경우 적용할 수 있는 옵션이 제약이 됩니다. Column 단위 INMEMORY 절은 추후 설명합니다. INMEMORY 옵션을 설정하기 위해서는 아래의 구문에서 INMEMORY 절을 명시합니다.

  • CREATE TABLESPACE or ALTER TABLESPACE 테이블 스페이스에 INMEMORY 옵션을 사용하면, 해당 테이블 스페이스에서 만들어지는 테이블들은 테이블 스페이스의 INMEMORY 옵션을 따릅니다. 테이블에 INMEMORY 옵션을 명시할 경우 테이블 스페이스의 INMEMORY 옵션을 override 합니다. 테이블 스페이스에 대한 INMEMORY 옵션은 만들어질 테이블의 default INMEMORY 옵션에만 영향을 줍니다. 따라서 ALTER 테이블 스페이스를 통해 INMEMORY 옵션을 사용하여도 이미 만들어진 테이블들은 INMEMORY 옵션이 설정되지 않으며, ALTER TABLESPACE를 통해 NO INMEMORY로 변경하여도 이미 INMEMORY 옵션이 설정된 테이블들은 NO INMEMORY로 변경되지 않는 것에 유의합니다.

  • CREATE TABLE or ALTER TABLE 테이블에 INMEMORY 옵션을 사용하면, 기본값으로 nonvirtual column들은 population 대상이 됩니다. Column 단위 INMEMORY 절로 특정 column 만 population 대상이 되게 설정할 수 있습니다. Partitioned 테이블의 경우 partition별로 INMEMORY 옵션을 지정할 수 있습니다. 명시하지 않은 INMEMORY 옵션에 대해 서는 테이블의 옵션을 상속받으며, 명시한 INMEMORY 옵션은 테이블의 옵션을 override합니다.

IMCS 설정 예시 (Table)

  • CREATE TABLE 구문

CREATE TABLE inmemory_test (
        id NUMBER(5) PRIMARY KEY,
        test_column VARCHAR2(15)) 
    INMEMORY;

  • ALTER TABLE 구문

ALTER TABLE inmemory_test INMEMORY;

IMCS 설정 예시 (Column)

Column 단위 INMEMORY 절로 특정 column이 inmemory population 대상이 되지 않도록 설정할 수 있습니다.

  • CREATE TABLE 구문

CREATE TABLE inmemory_test (
                id NUMBER(5) PRIMARY KEY,
                test_column VARCHAR2(15), 
                no_inmemory_column VARCHAR2(20))
        INMEMORY
        NO INMEMORY (no_inmemory_column);

  • ALTER TABLE 구문

ALTER TABLE inmemory_test NO INMEMORY (no_inmemory_column);

IMCS 설정 예시 (Tablespace)

테이블 스페이스의 INMEMORY 절은 DEFAULT 절이 선행되어야 합니다.

  • CREATE TABLESPACE 구문

CREATE TABLESPACE inmemory_ts 
    DATAFILE 'imts01.dbf' SIZE 40M 
    ONLINE
    DEFAULT INMEMORY;

  • ALTER TABLESPACE 구문

LTER TABLESPACE inmemory_ts DEFAULT INMEMORY;

Last updated