오라클에서 대용량 데이터를 처리할 때,

단일 프로세스만 사용하는 쿼리는 느리고 비효율적일 수 있습니다.

이럴 때 사용하는 것이 바로 병렬 처리 힌트(Parallel Hint)입니다.

Oracle은 병렬 쿼리 기능을 통해
하나의 SQL 실행을 여러 프로세스가 나눠서 동시에 처리할 수 있게 해줍니다.

이 글에서는
✅ 병렬 처리 힌트의 종류,
✅ 사용 방법과 주의사항,
✅ 병렬 처리 시 얻을 수 있는 성능 이점
등을 알기 쉽게 정리해드립니다.

⚙️ 병렬 처리란?

하나의 쿼리를 여러 CPU가 동시에 나눠 실행하는 기능


오라클은 CPU가 여럿일 때, 하나의 SQL을
👉 스캔, 정렬, 조인, 집계 등의 단계로 나눠
👉 병렬 슬레이브 프로세스들이 동시에 작업하게 합니다.

✅ 그 결과: 속도 향상대기 시간 감소대용량 처리에 강력


🧠 대표 병렬 처리 힌트 2종


1. 🚀 PARALLEL(table, degree) — 병렬 실행 요청

SELECT /*+ PARALLEL(emp, 4) */ * FROM emp;


  • 설명: emp 테이블을 4개의 프로세스로 병렬 처리 요청
  • degree 생략 가능: /*+ PARALLEL(emp) */ → 디폴트 병렬도 사용
  • 적용 대상:
    • 테이블 Full Scan
    • 대용량 조인
    • 집계 함수 등

✅ 사용 예

SELECT /*+ PARALLEL(sales, 8) */ product_id, SUM(amount)
FROM sales
GROUP BY product_id;


2. ⛔ NOPARALLEL(table) — 병렬 실행 억제

SELECT /*+ NOPARALLEL(emp) */ * FROM emp;


  • 설명: 특정 테이블에 대해 병렬 처리를 강제로 하지 않도록 설정
  • 사용 시점:
    • 병렬 처리 시 오히려 성능이 저하될 때
    • 시스템 자원 과다 소모 방지 필요 시


✅ 병렬 힌트 적용 시 효과

작업 유형병렬 처리 효과
Full Table Scan✅ 빠른 블록 읽기 가능
대용량 조인✅ 처리 시간 단축
정렬/집계✅ 병렬 분산 처리로 부하 감소
INSERT/CREATE TABLE AS SELECT✅ Direct Path 병렬 가능

⚠️ 병렬 힌트 사용 시 주의사항

주의 항목설명
🔧 서버 설정병렬 처리는 서버의 CPU/메모리 설정에 따라 제한
🔄 IO 부하병렬도가 너무 높으면 오히려 디스크 병목 발생 가능
📊 통계 필수옵티마이저가 병렬 실행을 고려하려면 통계가 최신이어야 함
🧪 반드시 테스트힌트만 믿지 말고 실행 계획으로 효과 확인 필요

🔍 실행 계획 확인 예시

EXPLAIN PLAN FOR
SELECT /*+ PARALLEL(emp, 4) */ * FROM emp;

SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY);


실행 계획에서 PX COORDINATOR, PX SEND, PX BLOCK 같은 키워드가 있으면 병렬 처리 적용됨.


📌 힌트 요약 정리표

힌트설명
PARALLEL(table)병렬 처리 요청 (기본 병렬도 사용)
PARALLEL(table, N)병렬도 N으로 명시
NOPARALLEL(table)병렬 처리 사용 금지

🏁 마무리

병렬 힌트는
🔸 대용량 테이블
🔸 집계 쿼리
🔸 Full Table Scan
상황에서 성능을 획기적으로 개선할 수 있는 도구입니다.

하지만 시스템 자원 상황과 병렬 계획 여부에 따라
반드시 EXPLAIN PLAN이나 AUTOTRACE로 실행 결과를 검토하고
필요할 때에만 전략적으로 사용하세요.