Oracle Admin 강좌 (Oracle9i)
IOT(INDEX ORGANIZED TABLE) 란? 10 1 99,999+

by 구루비 IOT UROWID INDEX ORGANIZED TABLE [2005.03.23]


IOT(INDEX ORGANIZED TABLE) 란?

  일반 테이블에서 인덱스를 통해서 레코드를 액세스 할 때에는 키 값을 가지고 인덱스를 탐색해서 ROWID를 얻은 다음에 다시 ROWID를 이용해서 테이블을 읽는 두 번의 과정을 거쳐야 합니다.

  또한 키 컬럼이 인덱스와 테이블 양 쪽에 중복해서 저장되므로 키 값이 큰 경우에는 디스크의 낭비 또한 무시할 수 없습니다. 이러한 문제점을 해결하고자 고안된 것이 IOT(Index Organized Table) 입니다.

  IOT는 인덱스 안에 테이블을 넣어 버린 구조로 되어 있기 때문에 인덱스를 읽는 것으로 모든 작업이 완료 됩니다.

  키 값에 해당되는 레코드를 테이블에서 읽을 필요도 없고, 데이터의 중복 문제도 자연스럽게 해결할 수 있습니다.

  IOT는 겉보기에는 테이블이지만 실제로는 기본 키(primary key)를 근간으로 한 인덱스이기 때문에 전제 조건으로 Primary Key를 필요로 합니다.

  IOT를 생성하면 인덱스와 테이블이 같은 저장 구조에 생성되어 SQL 문이 실행되면, 무조건 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가 절약 됩니다.

 

일반 테이블과 IOT테이블의 차이점

  - 일반테이블은 ROWID로 행을 구별하지만 IOT는 PK로 행을 구별합니다.

  - 일반테이블의 FULL SCAN은 행이 Return되는 순서를 예측할 수 없지만, IOT는 PK값의 순서에 따랄 출력됩니다.

  - IOT는 Unique 제약조건을 설정 할 수 없습니다.

  - IOT는 클러스트를 사용할 수 없습니다.

  - IOT는 일반테이블보다 저장공간이 감소합니다.

  - IOT는 Primary Key를 꼭 생성해야 합니다.

  - IOT의 Secondary 인덱스는 Primary Key값과 그것을 기반으로 하는 'Universal Rowid' 즉, Urowid를 가지고 인덱스가 만들어집니다.

  - IOT는 일반 인덱스와 달리 물리적인 ROWID 정보를 가지고 있지 않고 논리적인 유니버설 ROWID(UROWID)를 가지고 있어 빠르게 검색할 수 있습니다.

  ※ UROWID(Universal Rowid) : 인덱스 구성 테이블(IOT, Index-Organized Table)행의 논리적인 위치

 

참고문헌

  • - Oracle Technical Bulletins No.11615 ORACLE 8.0의 IOT(INDEX ORGANIZED TABLE)
  • - Oracle 9i Performance Tuning Student Guide Volumn 1

- 강좌 URL : http://www.gurubee.net/lecture/1863

- 구루비 강좌는 개인의 학습용으로만 사용 할 수 있으며, 다른 웹 페이지에 게재할 경우에는 출처를 꼭 밝혀 주시면 고맙겠습니다.~^^

- 구루비 강좌는 서비스 제공을 위한 목적이나, 학원 홍보, 수익을 얻기 위한 용도로 사용 할 수 없습니다.

by 김홍찬 [2006.09.21 14:05:24]
특징 두번째줄 오타
포한 합니다. --> 포함 합니다.
댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입