데이터베이스

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 성능이 중요한 경우 일반 테이블이 더 적합할 수 있음.

zerg96

Recent Posts

노트북(윈도우)에서 아이폰 유선 테더링 하기

윈도우 운영체제의 노트북에서는 iPhone 유선 테더링이 잘 안되는 경우가 많습니다. 보통 iPhone의 드라이버가 설치가 안되있어서인…

3일 ago

오라클 래치(Latch)

오라클 데이터베이스의 성능을 논할 때, 내부적으로 발생하는 경합(Contention)은 피할 수 없는 주제다. 특히 다수의 프로세스가…

7일 ago

사장님도 3표, 나도 3표? ‘3%룰’ 완전 정복!

안녕하세요, 혹시 이런 생각해 본 적 없으신가요? "내가 투자한 회사는 누가 감시하고, 어떻게 운영될까?" 오늘은…

3주 ago

Vector Store(벡터 스토어)

'벡터 스토어' 완벽 가이드: AI 시대, 데이터의 새로운 심장을 만나다 IT 업계는 인공지능(AI)이라는 거대한 패러다임의…

3주 ago

Gemini CLI (재미나이 CLI)

1. Gemini CLI란 무엇인가요? Gemini CLI는 터미널 환경에서 직접 Gemini 모델과 상호작용할 수 있도록 만들어진…

3주 ago

과적합 (overfitting)

과적합은 머신러닝에서 학습용데이터를 과하게 학습하여, 실제데이터를 예측하지 못하는 현상을 말합니다. 인공지능(AI)의 학습 방법은 우리가 시험공부를…

1개월 ago