IOT(Indexed Organized Table)

Oracle의 IOT(Indexed Organized Table) 테이블은 B-tree 인덱스 구조를 기반으로 데이터를 저장하는 특수한 테이블입니다. 일반 테이블(Heap Organized Table)과는 다르게, 기본 키(Primary Key)를 기반으로 데이터를 정렬하여 저장합니다.

📌 IOT 테이블 특징

  1. B-tree 인덱스 기반 저장
    • 일반 테이블은 데이터를 Heap에 저장하고, 인덱스가 별도로 존재하지만,
      IOT 테이블은 기본 키 인덱스 자체에 데이터를 저장하여 성능을 향상시킵니다.
  2. 빠른 기본 키 검색 성능
    • 기본 키 검색이 빠르며, 추가적인 테이블 조회 없이 데이터를 직접 읽을 수 있습니다.
    • 특히 OLTP(Online Transaction Processing) 환경에서 성능을 극대화할 수 있습니다.
  3. 디스크 I/O 감소
    • 데이터와 인덱스가 함께 저장되므로 인덱스 검색 후 테이블을 다시 조회할 필요 없음
    • 따라서 디스크 읽기 연산이 줄어들어 성능이 향상됨.
  4. 공간 절약 가능
    • 테이블과 인덱스가 하나로 통합되므로 공간 절약 가능.
    • 그러나 행 크기가 클 경우 오히려 성능이 저하될 수 있음.
  5. 범위 검색이 빠름
    • 기본 키를 기준으로 정렬되어 있어 범위 검색(Range Scan) 이 빠름.

📌 IOT 테이블 생성 방법

CREATE TABLE iot_table (
id NUMBER PRIMARY KEY,
name VARCHAR2(100),
age NUMBER
) ORGANIZATION INDEX;
  • ORGANIZATION INDEX 키워드를 사용하면 IOT 테이블로 생성됨.
  • 기본 키(id)를 기준으로 B-tree 인덱스 구조로 정렬 및 저장.

📌 IOT 테이블 성능 튜닝

  1. 오버플로우 방지
    • IOT 테이블의 각 행이 너무 커지면 일부 데이터가 오버플로우 세그먼트(Overflow Segment)로 이동 → 성능 저하 발생.해결 방법: 행 크기를 줄이거나 오버플로우를 위한 별도 공간 지정
    CREATE TABLE iot_table ( id NUMBER PRIMARY KEY, name VARCHAR2(100), age NUMBER ) ORGANIZATION INDEX INCLUDING name -- name까지는 IOT 테이블에 저장 OVERFLOW; -- 나머지 컬럼은 오버플로우 세그먼트에 저장
  2. 적절한 기본 키 선정
    • 기본 키 크기가 크면 B-tree 깊이가 증가하여 성능 저하 가능
    • 작은 크기의 기본 키 사용 권장 (예: VARCHAR2(50) 대신 NUMBER 사용)

📌 IOT 테이블 vs 일반 테이블 비교

비교 항목일반 테이블 (Heap)IOT 테이블
데이터 저장 구조Heap (비정렬)B-tree 인덱스 정렬
기본 키 검색 속도상대적으로 느림빠름
디스크 I/O테이블 + 인덱스 읽기인덱스에서 바로 조회
인덱스 유지 비용별도 관리 필요내장됨
INSERT 속도빠름상대적으로 느림

📌 언제 IOT 테이블을 사용해야 할까?

기본 키 기반 검색이 많을 때 → 조회 성능 향상
데이터 정렬이 필요할 때 → 범위 검색이 많으면 유리
디스크 I/O를 줄여야 할 때 → 인덱스 탐색 후 테이블 조회 과정 생략 가능
자주 변경되는 데이터(UPDATE, DELETE) → 조각화(Fragmentation) 발생 가능
행 크기가 클 때 → 오버플로우 문제 발생 가능

📌 결론

  • OLTP 환경에서 기본 키 기반 검색이 많고, 데이터 크기가 작을 때 유용함.
  • 읽기 성능 최적화가 필요할 때 고려하면 좋음.
  • 그러나 INSERT/UPDATE 성능이 중요한 경우 일반 테이블이 더 적합할 수 있음.

Leave a Comment