Index Organized Table (IOT)

□ Index Organized Table (IOT) 의 특성

  - B*Tree 구조에 전체 행 저장

    · 저장 공간 감소 (인덱스와 데이터 블록 공유)

  - Primary Key를 기준으로 테이블 데이터를 읽을 때 빠른 성능 제공

  - 논리적 ROWID 개념 지원

    · IOT내의 ROW를 지칭할 수 있는 논리적 ID

    · 2차 인덱스의 생성 및 사용이 가능

  - 읽기 전용 데이터에 적합

    · UPDATE가 자주 일어나는 경우, 인덱스 구조에 큰 변화 발생

 

 

-- IOT 테이블
CREATE TABLE TEST(
 NO NUMBER  CONSTRAINT TEST_NO_PK Primary Key,
 TITLE VARCHAR2(50),
 CONTNETS VARCHAR2(500)

)
 TABLESPACE USERS;
 
INSERT INTO TEST VALUES(3,'CCCC','CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC');
INSERT INTO TEST VALUES(1,'AAAA','AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA');
INSERT INTO TEST VALUES(5,'EEEE','EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE');
INSERT INTO TEST VALUES(2,'BBBB','BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB');
INSERT INTO TEST VALUES(4,'DDDD','DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD');
COMMIT;

 

CREATE TABLE IOTTEST (
NO NUMBER CONSTRAINT IOTTEST_PK_NO PRIMARY KEY,
TITLE VARCHAR2(50),
CONTENTS VARCHAR2(500)

)
ORGANIZATION INDEX TABLESPACE USERS
PCTTHRESHOLD 40 INCLUDING TITLE
OVERFLOW TABLESPACE USERS;

 
INSERT INTO IOTTEST VALUES(3,'CCCC','CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC');
INSERT INTO IOTTEST VALUES(1,'AAAA','AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA');
INSERT INTO IOTTEST VALUES(5,'EEEE','EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE');
INSERT INTO IOTTEST VALUES(2,'BBBB','BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB');
INSERT INTO IOTTEST VALUES(4,'DDDD','DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD');
COMMIT;


select no, title from test'


select no, title from iottest; 

 

--조회해보면 IOTTEST는 테이블이 없고 인덱스만 나온다.
select * from DBA_SEGMENTS
WHERE SEGMENT_NAME LIKE '%TEST%';.

select * from DBA_SEGMENTS
WHERE SEGMENT_NAME LIKE '%IOT%'
and TABLESPACE_NAME='USERS';

 

- ORGANIZATION INDEX TABLESPACE : IOT Data가 저장되는 Tablespace
- PCTTHRESHOLD(default : 50) : IOT를 위해서 예약된 공간의 백분율로,
  1블럭의 N% 비율보다 큰 데이터가 입력되면 키 열이 아닌 데이터는
  OVERFLOW TABLESPACE절에 정의된 테이블스페이스에 저장

- INCLUDING : IOT 행을 인덱스와 오버플로우 구역으로 나눌 열을 구분
  INCLUDING 뒤에 있는 컬럼만 제외하고 모두 오버플로우 세그먼트에 저장
  INCLUDING이 지정되지 않았는데 행 크기가 PCTTHRESHOLD를 초과하면
  기본 키 열을 제외한 모든 이 오버플로우 세그먼트에 저장
 
- OVERFLOW TABLESPACE : PCTTHRESHOLD를 초과하는 Data 행이 저장


 

'Study Note > Database' 카테고리의 다른 글

SQL TUNNING - 1  (0) 2016.02.24
파티션 테이블(partition table)  (0) 2016.02.24
Index 생성 속도 향상 - parallel, nologging 옵션  (0) 2016.02.23
V$SQLAREA 자료 사전  (0) 2016.02.16
SQL*TRACE  (0) 2016.02.16

+ Recent posts