Oracle의 Index Partitioning(인덱스 파티션)은 대용량 테이블의 파티션 테이블에 대한 인덱스를 효율적으로 관리하는 기법입니다.
테이블이 파티션되어 있으면, 인덱스도 같은 방식으로 파티션하면 성능과 관리 효율이 향상됩니다.
✔ 장점
Oracle은 테이블의 파티션 방식에 따라 인덱스를 다르게 설정할 수 있습니다.
📌 예제: RANGE PARTITIONED TABLE + LOCAL INDEX
CREATE TABLE orders (
order_id NUMBER,
customer_id NUMBER,
order_date DATE,
amount NUMBER
)
PARTITION BY RANGE (order_date) (
PARTITION p_2023 VALUES LESS THAN (TO_DATE('2024-01-01', 'YYYY-MM-DD')),
PARTITION p_2024 VALUES LESS THAN (TO_DATE('2025-01-01', 'YYYY-MM-DD'))
);
CREATE INDEX orders_idx ON orders(customer_id)
LOCAL; ✔ 특징
orders 테이블이 order_date 기준으로 RANGE PARTITION되어 있으므로, orders_idx 인덱스도 각 파티션별로 생성됨.📌 예제: GLOBAL HASH PARTITIONED INDEX
CREATE INDEX orders_gidx ON orders(customer_id)
GLOBAL PARTITION BY HASH (customer_id)
PARTITIONS 4; ✔ 특징
📌 예제: 글로벌 논파티션 인덱스
CREATE INDEX orders_gnidx ON orders(customer_id) GLOBAL; ✔ 특징
orders 테이블을 대상으로 하나의 인덱스만 존재.Index Partition Pruning(인덱스 절단)은 불필요한 인덱스 파티션을 자동으로 제외하여 성능을 최적화하는 기법입니다. Pruning은 참고로 원래 가지치기 라는 뜻이 있습니다.
Oracle은 로컬 인덱스를 사용할 경우 자동으로 인덱스 프루닝을 수행합니다.
SELECT * FROM orders WHERE order_date BETWEEN TO_DATE('2024-01-01', 'YYYY-MM-DD')
AND TO_DATE('2024-12-31', 'YYYY-MM-DD'); ✔ 결과:
p_2024 파티션만 검색 → 해당 파티션의 인덱스만 접근 → 불필요한 인덱스 검색 제거 (프루닝)SELECT * FROM orders WHERE customer_id = 12345; ✔ 결과:
테이블에 새로운 파티션을 추가하면 LOCAL INDEX는 자동 추가되지만, GLOBAL INDEX는 수동으로 관리해야 함.
📌 로컬 인덱스 자동 추가
ALTER TABLE orders ADD PARTITION p_2025 VALUES LESS THAN (TO_DATE('2026-01-01', 'YYYY-MM-DD')); 📌 글로벌 인덱스는 수동 재구성 필요
ALTER INDEX orders_gidx REBUILD; 📌 특정 파티션의 인덱스만 삭제
ALTER INDEX orders_idx DROP PARTITION p_2023; 📌 인덱스 파티션만 개별적으로 재구성
ALTER INDEX orders_idx REBUILD PARTITION p_2024; | 구분 | 로컬 파티션 인덱스 (LOCAL) | 글로벌 파티션 인덱스 (GLOBAL) |
|---|---|---|
| 테이블 파티션과 일치 여부 | ✅ 동일한 파티션 방식 적용 | ❌ 독립적인 방식 적용 |
| 프루닝 지원 여부 | ✅ 지원 (자동 최적화) | ✅ 지원 (조건 충족 시) |
| 관리 편의성 | ✅ 테이블 파티션 추가/삭제 시 자동 반영 | ❌ 직접 재구성 필요 |
| 특정 파티션만 인덱싱 가능 | ✅ 가능 (독립적 유지) | ❌ 전체 인덱스 유지 |
| 범위 조회 최적화 | ✅ 특정 파티션 인덱스만 조회 | ❌ 전체 인덱스를 검색 가능 |
✅ Oracle Index Partitioning은 대용량 데이터에서 인덱스 성능을 최적화하는 필수적인 기법
✅ 로컬 인덱스는 테이블과 동일한 파티션 구조를 유지하여 관리가 용이하며, 프루닝을 통한 최적화 가능
✅ 글로벌 인덱스는 특정 조건에서 유리하지만, 관리가 어렵고 전체 인덱스 스캔 가능성이 존재
✅ 업무 환경에 맞게 적절한 인덱스 파티션을 선택하는 것이 중요! 🚀
1. 타입스크립트 개요 타입스크립트(TypeScript)는 마이크로소프트(Microsoft)가 개발한 자바스크립트(JavaScript)의 상위 집합(Superset) 언어입니다.즉, 자바스크립트에 정적 타입(Static Type)을 추가하고,…
윈도우 운영체제의 노트북에서는 iPhone 유선 테더링이 잘 안되는 경우가 많습니다. 보통 iPhone의 드라이버가 설치가 안되있어서인…
안녕하세요, 혹시 이런 생각해 본 적 없으신가요? "내가 투자한 회사는 누가 감시하고, 어떻게 운영될까?" 오늘은…
1. Gemini CLI란 무엇인가요? Gemini CLI는 터미널 환경에서 직접 Gemini 모델과 상호작용할 수 있도록 만들어진…