문서유형ㅣ기술정보
분야ㅣ설치
적용제품버전ㅣTibero 7.2.4
문서번호ㅣTADTI171
개요
IOT는 일반 테이블과 다음과 같은 차이가 있습니다.
일반 테이블은 ROWID로 행을 구별하지만 IOT는 Primary 키로 행을 구분합니다.
일반 테이블의 Full Scan은 행이 Return되는 순서를 예측할 수 없지만, IOT는 Primary 키 값의 순서에 따라 출력 합니다.
IOT는 Primary 키를 반드시 생성해야 합니다.
IOT는 일반 테이블보다 저장공간이 감소합니다.
일반 테이블과 IOT 구조
| TABLE | IOT |
IOT의 장점과 단점
| 구분 | 설명 |
| 장점 | - 기본 키를 랜덤 액세스할 때 기본 키를 기준으로 정렬되어 있으므로 일반 테이블보다 빠릅니다. - 인덱스와 데이터 영역에 기본 키가 중복 저장 되지 않으므로 스토리지 사용량이 감소합니다. |
| 단점 | - 데이터를 변경할 때 정렬 작업이 일어나 성능이 느려집니다. (잦은 데이터의 입력, 수정, 삭제가 있는 경우 IOT는 적합하지 않습니다) - IOT에 Direct Path Insert가 작동하지 않습니다. - 컬럼이 많을수록 속도가 느려집니다. |
Tibero IOT 지원사항
| 구분 | 설명 |
| 지원 | - 컬럼 Size 변경 - 컬럼 Default 값, NULL, NOT NULL 설정 - 두 개 이상의 컬럼을 동시에 변경 - 컬럼 삭제 및 컬럼 Constraint 삭제 |
| 미지원 | - Partitioned IOT에서 Partition에 대한 Alter table문(Partition modify 불가) - Modify Column에서 NULL, NOT NULL만 modify 가능(check, unique로 불가) - Primary 키에 대한 modify(추후 지원 예정) |
방법
IOT 테이블 생성
IOT 테이블 생성 방법
CREATE TABLE <테이블명> (
<컬럼1>,
<컬럼2>,
<컬럼3>,
PRIMARY KEY (<컬럼1, 컬럼2>)
)
ORGANIZATION INDEX TABLESPACE <Tablespace명>
PCTTHRESHOLD <로우 비율>
INCLUDING <컬럼>
OVERFLOW TABLESPACE <Tablespace명>;각 항목에 대한 설명은 다음과 같습니다.
| 항목 | 설명 |
| ORGANIZATION INDEX | IOT 생성을 정의하고 지정한 Tablespace를 사용합니다. |
| PCTTHRESHOLD | 1블럭의 n% 비율보다 큰 데이터가 입력되면 키 열이 아닌 데이터는 OVERFLOW TABLESPACE절에 정의된 Tablespace에 저장됩니다. – INCLUDING을 지정한 경우 INCLUDING이 지정된 이전의 컬럼까지의 크기 합이 PCTTHRESHOLD 범위를 넘게 되면 OVERFLOW 데이터 영역에 저장됩니다. |
| INCLUDING | INCLUDING으로 선언된 컬럼 이후부터는 무조건 오버플로우 데이터 영역에 저장됩니다. INCLUDING은 기본키의 마지막 컬럼이나 기본키가 아닌 임의의 컬럼을 지정할 수 있습니다. |
| OVERFLOW | OVERFLOW 영역에 저장할 때 사용할 Tablespace를 지정합니다. |
IOT 테이블 생성 예
SQL> CREATE TABLE JOB_IOT (
JOBID VARCHAR(10 BYTE),
JOBNAME VARCHAR(35 BYTE),
MINSAL NUMBER(6),
MAXSAL NUMBER(6),
PRIMARY KEY (JOBID)
)
ORGANIZATION INDEX TABLESPACE USR
PCTTHRESHOLD 20
INCLUDING JOBID
OVERFLOW TABLESPACE USR;
Table 'JOB_IOT' created.
Total elapsed time 00:00:00.163124주의
IOT를 생성하는 경우 다음의 제약사항에 주의해야합니다.
- LOB이나 LONG은 포함할 수 없습니다.
- 컬럼의 최대 개수는 1000개입니다.
- 인덱스 영역에는 최대 255개의 컬럼만 저장할 수 있습니다. 컬럼 개수가 그 이상이거나 인덱스 영역에 다 저 장할 수 없는 경우 OVERFLOW를 지정해야합니다.
- PCTTHRESHOLD의 값은 1-50입니다. 하지만 구조적인 문제로 실제 인덱스 영역에 저장할 수 있는 로우의 최대 크기는 블럭의 50%보다 더 작습니다.
- 모든 컬럼은 PCTTHRESHOLD보다 작아야 합니다.