1. 파티셔닝(Partitioning) 개념
파티셔닝은 대용량 테이블이나 인덱스를 논리적으로 분할하여 관리하는 방법입니다.
하나의 테이블이 너무 크면 데이터 검색 속도가 느려지고 관리가 복잡해집니다.
이를 작은 단위로 나누어 성능과 관리 효율성을 높이는 것이 파티셔닝의 목적입니다.
장점
- 특정 파티션만 읽어 I/O 감소 → 쿼리 성능 향상
- 백업, 복구, 삭제 작업을 파티션 단위로 가능
- 데이터 관리 유연성 향상
2. 파티셔닝 종류
파티셔닝 방식 | 특징 | 예시 |
---|---|---|
범위 파티셔닝 (Range) | 컬럼 값 범위에 따라 분할 | 2023년 데이터 , 2024년 데이터 |
리스트 파티셔닝 (List) | 특정 값 목록 기준으로 분할 | 서울 , 부산 , 대구 |
해시 파티셔닝 (Hash) | 해시 함수로 균등 분할 | ID % 4 |
복합 파티셔닝 (Composite) | 두 가지 이상의 파티셔닝 조합 | Range + Hash |
3. 파티셔닝 활용 예시
CREATE TABLE SALES (
SALE_ID NUMBER,
SALE_DATE DATE,
AMOUNT NUMBER
)
PARTITION BY RANGE (SALE_DATE) (
PARTITION P2023 VALUES LESS THAN (TO_DATE('2024-01-01', 'YYYY-MM-DD')),
PARTITION P2024 VALUES LESS THAN (TO_DATE('2025-01-01', 'YYYY-MM-DD'))
);
- 2023년 데이터는
P2023
, 2024년 데이터는P2024
파티션에 저장 - 2023년 데이터 조회 시 P2024는 아예 읽지 않음 → 성능 개선
4. 병렬 처리(Parallel Processing) 개념
병렬 처리는 하나의 SQL 문장을 여러 프로세스가 동시에 작업하도록 하여 성능을 높이는 기술입니다.
대용량 데이터 조회, 집계, 인덱스 생성 시 매우 효과적입니다.
작동 원리
- 데이터를 멀티 프로세스/스레드로 분할 처리
- 각 작업이 끝나면 결과를 합침
- CPU, I/O 사용량이 증가할 수 있음 → 자원 상황에 따라 조정 필요
5. 병렬 처리 예시
SELECT /*+ PARALLEL(SALES, 4) */
SALE_DATE, SUM(AMOUNT)
FROM SALES
GROUP BY SALE_DATE;
PARALLEL(SALES, 4)
→SALES
테이블을 4개의 프로세스로 병렬 처리- 4배 빠른 속도 기대 가능 (단, CPU 자원 충분해야 함)
6. 파티셔닝 + 병렬 처리 결합 효과
- 파티셔닝 : 데이터 접근 범위를 최소화
- 병렬 처리 : 나눠진 데이터 범위를 동시에 처리
- 결합하면 대용량 환경에서 폭발적인 성능 향상 가능
7. 실행 계획 비교 (개념 흐름)
[미적용]
쿼리 → 전체 데이터 풀 스캔 → 결과 반환
[파티셔닝 적용]
쿼리 → 해당 파티션만 스캔 → 결과 반환
[파티셔닝 + 병렬 처리]
쿼리 → 파티션별 병렬 프로세스 처리 → 결과 합침 → 반환
8. 정리
- 파티셔닝은 데이터를 나눠서 관리 → 관리와 성능 모두 개선
- 병렬 처리는 여러 작업을 동시에 수행 → 처리 속도 향상
- 두 기술을 함께 사용하면 대용량 DB 성능 극대화
- 하지만 병렬 처리 시 서버 자원 소모 증가에 주의해야 함