조회 속도를 향상시킬 수 있는 데이터베이스 검색 기술인 인덱스(Index)를 대용량으로 설정하기 위해 필요한 TEMP 용량 산정 및 모니터링 방법을 안내 합니다.
TEMP 용량 산정 시 고려사항
Note!
정렬 과정에서 빠른 비교를 위해 소트 키를 평균치로 만들게 되면, 본래 데이터의 크기보다 커져 테이블 사이즈보다 크게 TEMP 테이블 사이즈를 할당해도 부족하다는 오류가 발생할 수 있습니다.
인덱스 생성에서 사용한 parallel 옵션의 경우, 메모리 사용량은 늘 수 있지만 TEMP 테이블 공간 사용량에는 크게 영향을 주지 않습니다.
- 인덱스로 생성된 컬럼들의 수가 많고 string 컬럼들로 구성된 경우, TEMP 사이즈는 테이블 사이즈의 2배까지 필요합니다.
- 동시에 다른 정렬 쿼리가 실행 시, 해당 쿼리에서 사용하는 양도 고려해 사이즈를 계산합니다.
- 적당한 DOP(Data-oriented parsing)는 cpu개수나 io채널 수에 맞춰 설정하는 것을 권장합니다.
Note!
테이블에 실제 데이터 값의 형태에 따라 늘어나는 사이즈가 다르므로 정확한 최소 수치는 계산이 어렵습니다.
TEMP 사용량 모니터링
인덱스 구문 생성 및 모니터링 create index online parallel
1. unusable 상태의 인덱스를 생성합니다.
2. 내부적으로 online rebuild를 수행합니다.
online rebuild 방식은 사용자가 명기한 인덱스명(XPK_TEST_TAB)과는 다른 이름의 segments로 데이터를 입력하며 완료 시에는 segment가 교체됩니다.
Note!
인덱스명과 다른 이름의 segments는 ‘dba_segments’에서 사용량이 많은 오브젝트를 order by 조회해서 확인 할 수 있습니다.
3. 모니터링
v$tempseg_usage를 모니터링 함으로써 작업의 진행 정도를 확인할 수 있습니다.
Note!
TEMP에 있던 run들을 merge하여 결과를 index segments에 넣는 단계에서는 temp sgmt를 반납하기 때문에 temp사용량이 감소합니다.
따라서 index 생성이 완료되기 직전에는0.5M 정도의 미미한 temp사용량이 관찰되기도 합니다.
마치 진행이 거의 안된 것처럼 보이지만, 실제로는 진행 완료에 이른 것 입니다.
example
CREATE TABLE TIBERO.TEST_TAB
(
BSDT VARCHAR(8) NOT NULL,
RPT_ID VARCHAR(20) NOT NULL,
RFACT VARCHAR(5) NOT NULL,
SRC_FG VARCHAR(5) NOT NULL,
RPT_TYPE VARCHAR(50) NOT NULL,
UD1 VARCHAR(16) NOT NULL ,
UD2 VARCHAR(16) NOT NULL ,
UD3 VARCHAR(16) NOT NULL ,
UD4 VARCHAR(16) NOT NULL ,
UD5 VARCHAR(16) NOT NULL ,
UD6 VARCHAR(16) NOT NULL ,
UD7 VARCHAR(16) NOT NULL ,
UD8 VARCHAR(16) NOT NULL ,
UD9 VARCHAR(16) NOT NULL ,
UD10 VARCHAR(16) NOT NULL ,
UD11 VARCHAR(16) NOT NULL ,
UD12 VARCHAR(16) NOT NULL ,
UD13 VARCHAR(16) NOT NULL ,
UD14 VARCHAR(16) NOT NULL ,
UD15 VARCHAR(20) NOT NULL ,
SCEN_ID VARCHAR(30) NOT NULL ,
PRICE NUMBER NULL,
VAR NUMBER NULL,
BASE_PRICE NUMBER NULL,
VAR_TOT NUMBER NULL,
VAR_IR NUMBER NULL,
VAR_EQ NUMBER NULL,
VAR_FX NUMBER NULL,
VAR_VL NUMBER NULL
)
TABLESPACE DATA_TS
CREATE UNIQUE INDEX TIBERO.XPK_TEST_TAB ON TIBERO.TEST_TAB
(
BSDT ,
RPT_ID ,
RFACT ,
SRC_FG ,
RPT_TYPE ,
UD1 ,
UD2 ,
UD3 ,
UD4 ,
UD5 ,
UD6 ,
UD7 ,
UD8 ,
UD9 ,
UD10 ,
UD11 ,
UD12 ,
UD13 ,
UD14 ,
UD15 ,
SCEN_ID
)
ONLINE
PARALLEL 8
NOLOGGING
TABLESPACE INDEX_TS