Oracle

게시글 보기
작성자 유건데이타 등록일 2015-05-18
제목 ORACLE 8.0의 IOT(INDEX ORGANIZED TABLE)
ORACLE 8.0의 IOT(INDEX ORGANIZED TABLE)
=======================================

Index Organized Talbe(IOT)는 Oracle 8에서 처음 소개된 새로운 object이다.
IOT에 대한 소개 및 특징, 사용 방법에 대하여 설명을 한다.

[특징]
- IOT는 table data를 primary key에 대한 B*Tree index에 적재하는 구조를 갖는다.
- IOT의 index row들은 인덱스 키 값과 non-key 값을 포한한다.
- IOT의 index에는 ROWID 정보가 없다.

[장점]
- range search, exact match를 수행하는 경우 일반적인 table보다 빠른
key-based access가 가능하다.
- full table scan 시 primary key에 대한 full index scan이 이루어지므로
자동적인 ordering이 이루어진다.
- index key column과 rowid에 대한 storage 중복을 피할 수 있어 storage가
절약된다.

[제약사항]
- 추가적인 index 생성이 불가능(IOT는 오직 primary key에 대한 indexing만 가능)
- cluster table로 이용되지 못함.
- 병렬 작업이 불가능
- 분산, 복제, 분할이 불가능
- long, long raw, lob이 지원이 안 됨.


[IOT 생성 구문의 예 및 이에 대한 설명]

SQL> CREATE TABLE IOTAB
2> (COL_PK NUMBER PRIMARY KEY,
3> COL2 VARCHAR2(500),
4> COL3 NUMBER,
5> COL4 VARCHAR2(1000))
6> ORGANIZATION INDEX TABLESPACE USERS
7> PCTTHRESHOLD 10 INCLUDING COL2
8> OVERFLOW TABLESPACE USERS;

- ORGANIZATION INDEX : IOT를 생성함을 정의하는 keyword

- PCTTHRESHOLD : IOT의 단일 row가 (PCTTHRESHOLD / 100) * DB_BLOCK_SIZE
보다 크다면 INCLUDING column 이후의 column data는 OVERFLOW table에 저장된다.

- INCLUDING : IOT의 단일 row size가 (PCTTHRESHOLD / 100) * DB_BLOCK_SIZE
보다 큰 경우 INCLUDING column 이후의 row data는 overflow table에 저장이 된다.
만일 including column이 지정이 되어 있지 않다면 pramary key column 이외의
column data가 overflow table에 저장된다.

- OVERFLOW TABLESPACE : 만일 overflow tablespace option을 주지 않고 생성된
IOT에 대하여 (PCTTHRESHOLD / 100) * DB_BLOCK_SIZE보다 큰 row가 발생한다면
ORA-1429와 같은 오류를 만나게 된다.


[IOT의 chained rows 확인]
- IOT의 chained rows 수를 확인하는 방법은 다음과 같이 IOT를 위한
chained_rows table을 생성한 후 anlyze command를 이용하여 가능하다.

procedure BUILD_CHAIN_ROWS_TABLE(
owner in varchar2,
iot_name in varchar2,
chainrow_table_name in varchar2 default 'IOT_CHAINED_ROWS');


- DBMS_IOT package는 $ORACLE_HOME/rdbms/admin/dbmsiotc.sql에 정의되어 있다.

- 다음은 IOT의 chained row 확인 절차에 대한 보기이다.

SQL> EXECUTE DBMS_IOT.BUILD_CHAIN_ROWS_TABLE('SCOTT','IOTAB');
SQL> ANALYZE TABLE IOTAB LIST CHAINED ROWS INTO IOT_CHAINED_ROWS;
Comment
등록된 코멘트가 없습니다.