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 |