메뉴 여닫기
개인 메뉴 토글
로그인하지 않음
만약 지금 편집한다면 당신의 IP 주소가 공개될 수 있습니다.
Oracle (토론 | 기여)님의 2025년 8월 29일 (금) 08:52 판
(차이) ← 이전 판 | 최신판 (차이) | 다음 판 → (차이)

Parallel Execution 요약

구분 설명
병렬 실행 정의 하나의 SQL 문을 여러 병렬 서버 프로세스로 나누어 동시에 실행하여 성능을 향상시키는 기능
주요 대상 SELECT, INSERT, UPDATE, DELETE (DML) / CREATE INDEX, CTAS, MOVE 등 (DDL)
병렬도 (DOP)
  • 수동 지정: PARALLEL 힌트 또는 객체 속성에 정의
  • 자동 결정: 옵티마이저가 통계와 자원 상황 기반으로 설정
  • 적응형: 실행 중 동적으로 조정
데이터 분배 방식
  • Hash Distribution: 해시값 기준으로 분배
  • Range Distribution: 값 범위별로 분배
  • Broadcast: 소규모 데이터를 모든 PX 서버에 복제
최적화 기법
  • Partition-Wise Joins: 동일 파티션 간 조인으로 네트워크 부하 최소화
  • Parallel DML: INSERT/UPDATE/DELETE 작업 병렬화
  • Parallel DDL: 인덱스 생성, 테이블 이동 등 대규모 DDL 병렬화
자원 관리 Resource Manager로 PX 세션 제어, DOP 제한 가능
모니터링 뷰 V$PQ_TQSTAT, V$PX_SESSION, V$PX_PROCESS 등
모범 사례
  • 대규모 데이터 처리 시 효과적
  • OLTP 환경에서는 자원 경합 주의
  • 파티셔닝과 결합 시 효과 극대화

1. 병렬 실행 개요 • 정의: 하나의 SQL 문을 여러 프로세스(병렬 서버 프로세스)로 분할하여 동시에 실행하는 기능. • 목적: 대용량 데이터베이스에서 성능 향상 및 자원 활용 최적화. • OLTP보다는 Data Warehouse, VLDB 환경에서 주로 사용.

2. 병렬 실행 대상 • SQL 문: SELECT, INSERT, UPDATE, DELETE • DDL 문: CREATE INDEX, CREATE TABLE AS SELECT (CTAS), MOVE, SPLIT PARTITION 등 • DML 문: Direct-Path Insert, 병렬 UPDATE/DELETE

3. 병렬도(Parallelism Degree, DOP) • DOP 정의: 동시에 실행할 프로세스 수 • 설정 방법: • 수동 설정: PARALLEL 힌트 또는 테이블/인덱스 속성에 지정 • 자동 설정: 옵티마이저가 통계와 리소스를 기반으로 결정 • 적응형(Adaptive DOP): 실행 중 워크로드에 맞춰 동적으로 조정 • 제한: 시스템 리소스 부족 시 DOP는 자동으로 줄어듦

4. 병렬 실행 전략 • Granules(작업 단위): 전체 작업을 작은 단위로 나누어 PX 서버가 분담 • 데이터 분배 방식 • Hash Distribution: 같은 해시값끼리 같은 서버에서 처리 • Range Distribution: 값 범위별로 분배 • Broadcast: 소규모 데이터를 모든 서버에 복제

5. 주요 최적화 기법 • Partition-Wise Joins: 같은 파티션 간 조인을 PX 서버끼리 수행 → 네트워크 부하 최소화 • Parallel DML: INSERT/UPDATE/DELETE 작업도 병렬 처리 가능 (단, 제약조건 관리 주의) • Parallel DDL: 인덱스 생성/재구축, 테이블 이동 등 대규모 DDL 작업의 시간 단축

6. 자원 관리 및 모니터링 • 자원 제한: Resource Manager를 통해 PX 사용량 제어 가능 • 모니터링 뷰: V$PQ_TQSTAT, V$PX_SESSION, V$PX_PROCESS 등에서 병렬 실행 상태 확인 가능 • 자동 튜닝: 실행 계획에 따라 옵티마이저가 PX 활용 여부와 방식 결정

7. 모범 사례 • 병렬 실행은 대용량 처리에 효과적이지만, OLTP 환경에서 무분별하게 사용하면 자원 경합 발생 가능 • 적절한 DOP 설정과 리소스 관리 정책 필요 • 파티셔닝과 결합하면 PX 효과 극대화

✅ 요약하면: 병렬 실행(Parallel Execution)은 VLDB에서 대용량 SQL/DML/DDL을 빠르게 수행하기 위한 핵심 기능이며, DOP 조정, 데이터 분배 전략, 파티션 조인, 자원 관리, 모니터링이 주요 포인트입니다.

SQL 예제

좋습니다 👍 요청하신 대로 도표는 미디어위키 형식, 그리고 SQL 예제 포함 요약을 같이 드릴게요.

📌 8장 Using Parallel Execution — 도표 요약 (MediaWiki 형식)

구분 설명
병렬 실행 정의 하나의 SQL 문을 여러 병렬 서버 프로세스로 나누어 동시에 실행하여 성능을 향상시키는 기능
주요 대상 SELECT, INSERT, UPDATE, DELETE (DML) / CREATE INDEX, CTAS, MOVE 등 (DDL)
병렬도 (DOP)
  • 수동 지정: PARALLEL 힌트 또는 객체 속성에 정의
  • 자동 결정: 옵티마이저가 통계와 자원 상황 기반으로 설정
  • 적응형: 실행 중 동적으로 조정
데이터 분배 방식
  • Hash Distribution: 해시값 기준으로 분배
  • Range Distribution: 값 범위별로 분배
  • Broadcast: 소규모 데이터를 모든 PX 서버에 복제
최적화 기법
  • Partition-Wise Joins: 동일 파티션 간 조인으로 네트워크 부하 최소화
  • Parallel DML: INSERT/UPDATE/DELETE 작업 병렬화
  • Parallel DDL: 인덱스 생성, 테이블 이동 등 대규모 DDL 병렬화
자원 관리 Resource Manager로 PX 세션 제어, DOP 제한 가능
모니터링 뷰 V$PQ_TQSTAT, V$PX_SESSION, V$PX_PROCESS 등
모범 사례
  • 대규모 데이터 처리 시 효과적
  • OLTP 환경에서는 자원 경합 주의
  • 파티셔닝과 결합 시 효과 극대화


📌 8장 Using Parallel Execution — SQL 예제 요약

1. 병렬 SELECT

-- EMP 테이블을 병렬로 스캔 SELECT /*+ PARALLEL(emp, 4) */ COUNT(*) FROM emp;

👉 EMP 테이블을 4개의 병렬 프로세스로 나누어 읽음

2. 병렬 인덱스 생성 (DDL)

-- 대규모 테이블 인덱스를 병렬 생성 CREATE INDEX sales_idx ON sales(transaction_date) PARALLEL 8;

👉 인덱스 생성을 8개의 PX 서버로 동시에 실행 → 대규모 인덱스 생성 시간 단축

3. 병렬 INSERT (Direct-Path)

-- SELECT 결과를 병렬로 INSERT INSERT /*+ APPEND PARALLEL(t, 8) */ INTO big_table t SELECT * FROM source_table;

👉 APPEND + PARALLEL 옵션으로 Direct-Path Insert 병렬 실행

4. 병렬 조인 (Partition-Wise Join)

-- 동일 파티션끼리 병렬 조인 SELECT /*+ PARALLEL(a 4) PARALLEL(b 4) PQ_DISTRIBUTE(a HASH, b HASH) */

      a.cust_id, b.order_id

FROM customers a, orders b WHERE a.cust_id = b.cust_id;

👉 Hash Partition 기반으로 같은 파티션끼리 조인 → 네트워크 부하 최소화

5. 병렬 실행 모니터링

-- 병렬 실행 상태 확인 SELECT * FROM V$PQ_TQSTAT; SELECT * FROM V$PX_SESSION; SELECT * FROM V$PX_PROCESS;

👉 현재 병렬 쿼리 상태, PX 서버 프로세스, 세션 정보를 확인