185. 전역 인덱스 (Global Index) vs 지역 인덱스 (Local Index)

핵심 인사이트: 책을 3권의 백과사전(파티션)으로 나눴다고 치자. 3권 전체의 단어를 모아서 커다란 색인(인덱스) 책 1권을 따로 만들면 '전역 인덱스'고, 1권 맨 뒤에는 1권 색인, 2권 맨 뒤에는 2권 색인을 각각 달아놓으면 '지역 인덱스'다. 대용량 파티셔닝 환경에서는 관리가 편한 '지역 인덱스'가 압도적인 승자다.

Ⅰ. 파티션 인덱스 (Partitioned Index)의 개념

대용량 테이블을 파티셔닝(Partitioning)으로 쪼개었을 때, 그 테이블에 걸려있는 인덱스(Index) 구조를 어떻게 가져갈 것인가에 대한 전략입니다. 인덱스가 파티션 테이블 전체를 하나로 통합하여 가리키는지(Global), 아니면 각 테이블 파티션과 정확히 1:1로 매핑되어 쪼개져 있는지(Local)에 따라 나뉩니다.

Ⅱ. 전역 인덱스와 지역 인덱스 비교

[ 테이블 파티션: 2023년 / 2024년 / 2025년 ]

1. Global Index (전역 인덱스 - 하나의 거대한 통 인덱스)
  ┌─────────────── 인덱스 나무 (B-Tree) ───────────────┐
  │ 2023년 데이터 위치 ─▶ [2023년 파티션]              │
  │ 2024년 데이터 위치 ─▶ [2024년 파티션]              │
  │ 2025년 데이터 위치 ─▶ [2025년 파티션]              │
  └────────────────────────────────────────────────────┘

2. Local Index (지역 인덱스 - 파티션마다 1:1로 잘린 미니 인덱스들)
  [2023년 파티션] ◀── [2023년 전용 미니 인덱스]
  [2024년 파티션] ◀── [2024년 전용 미니 인덱스]
  [2025년 파티션] ◀── [2025년 전용 미니 인덱스]
구분전역 인덱스 (Global Index)지역 인덱스 (Local Index)
독립성인덱스와 테이블 파티션이 1:N 구조 (독립성 없음)인덱스와 테이블 파티션이 완벽한 1:1 구조 (독립성 보장)
파티션 Drop 관리(치명적 단점) 옛날 2023년 파티션을 DROP하면, 전체 Global 인덱스가 깨져서 사용 불능(Unusable) 상태가 됩니다. 인덱스를 전체 리빌드(Rebuild)해야 합니다.2023년 파티션을 지우면 해당 년도의 미니 인덱스만 같이 삭제되므로, 다른 연도 인덱스는 100% 정상 작동합니다.
활용도파티션 키와 무관한 컬럼으로 유니크(Unique / PK) 제약을 걸어야 할 때만 어쩔 수 없이 씁니다.파티션 테이블을 설계할 때 무조건 Local Index를 생성하는 것이 실무의 99% 원칙입니다.

Ⅲ. 인덱스 파티셔닝 전략 요약

  1. 파티션 테이블에는 가급적 지역(Local) 인덱스를 생성하라. 관리가 예술적으로 편해진다.
  2. 테이블 파티션 키가 아닌 컬럼에 Primary KeyUnique를 잡아야 한다면, 오라클의 구조적 제약 때문에 어쩔 수 없이 전역(Global) 인덱스를 써야만 한다.

📢 섹션 요약 비유: 서랍장(테이블)을 1월, 2월, 3월로 칸막이(파티션)를 쳐서 나누어 놨습니다. 전역 인덱스는 포스트잇(인덱스)을 서랍장 바깥쪽 거대한 문짝 하나에 다닥다닥 붙여놓은 것이고, 지역 인덱스는 1월 서랍을 열면 1월 포스트잇만 그 안에 예쁘게 붙어있는 것입니다. 1월 서랍을 통째로 버릴 때 바깥 문짝의 포스트잇(전역)은 다 떨어져서 엉망이 되지만, 서랍 안의 포스트잇(지역)은 같이 깔끔하게 버려집니다.