데이터베이스 시스템 Oracle

곽태욱·2020년 4월 29일
0

강의 노트

목록 보기
9/22

Index-Organized Tables (IOT)

Index-Organized Tables은 B+ Tree 인덱스 테이블의 일종으로서 인덱스 entry에 레코드 포인터가 아닌 레코드 값 전체가 저장된 인덱스 테이블이다. 원래 인덱스 entry에는 기존 테이블의 레코드를 가리키는 레코드 포인터가 저장되지만, IOT는 레코드 포인터 대신 레코드 값 전체를 저장하기 때문에 기존 테이블이 필요하지 않는다. 트리 노드 조건도 기존 B+ Tree와 동일하게 모든 leaf 노드는 반절 이상 값이 차있어야 하고, search key의 삽입/삭제도 기존과 동일하게 처리할 수 있다. 일반적으로 테이블의 기본키가 IOT의 search key로 되고 이 순서에 대해 정렬된다.

IOT는 네트워크 상의 여러 이용자가 실시간으로 데이터베이스의 데이터를 갱신하거나 조회할 수 있는 기능을 가진 앱에 적합하다.

장점

  • 인덱스 테이블만 조회하면 되기 때문에 기본키에 대한 검색이 빨라진다.

  • 기본키에 대해 정렬되어 있기 때문에 기본키 범위 검색이 빠르다.

  • 원래 테이블을 따로 저장하지 않으니 공간이 절약되고, 레코드 삽입/수정/삭제 시 인덱스 테이블만 수정하면 된다.

  • 테이블에 대한 모든 작업을 할 수 있다. 그리고 키 압축, 오버플로 공간 지원, secondary 인덱스 테이블도 지원한다.

  • secondary 인덱스 테이블에 영향을 주지 않고도 인덱스 테이블을 온라인으로 재편성할 수 있다.

단점

  • IOT에 대한 secondary 인덱스 테이블을 구성할 때 인덱스 entry에 IOT leaf 노드를 가리키는 포인터를 저장하면, IOT leaf 노드에 저장된 레코드가 삽입/수정/삭제될 때 해당 레코드를 기리키는 모든 secondary 인덱스 테이블의 레코드 포인터를 수정해야 하는 단점이 있다. 따라서 secondary 인덱스 테이블의 인덱스 entry에 IOT의 search key 값을 저장하는 방식으로 이런 단점을 없앨 수 있지만, secondary 인덱스 테이블 검색 시 트리를 2번 탐색해야 하는 단점이 생긴다.
CREATE TABLE table_name (
  column_1 data_type column_constraint,
  column_2 data_type column_constraint,
  ...
  primary key(column, ...),
  foreign key(column, ...),
  table_constraint
)
ORGANIZATION INDEX 
TABLESPACE admin_tbs
PCTTHRESHOLD 20
OVERFLOW TABLESPACE admin_tbs2;
profile
이유와 방법을 알려주는 메모장 겸 블로그. 블로그 내용에 대한 토의나 질문은 언제나 환영합니다.

0개의 댓글