본문 바로가기

데이터베이스/SQL 튜닝

[SQL튜닝/고급SQL활용] 배치 프로그램 구현 패턴과 튜닝 방안, 병렬처리 활용 (절차형/One SQL 프로그램, Granule, IN-OUT 오퍼레이션, P from S, P to P, P to S)

🖥️ 들어가며

📌 One SQL
📌 Granule: 블록 기반/파티션 기반 Granule
📌 IN-OUT 오퍼레이션: S to P(P from S), P to S, P to P

✏️ 1. 배치 프로그램 구현 패턴과 튜닝 방안

  • 절차형 프로그램 vs. 집합적(=One SQL) 프로그램
  • 절차형 프로그램
    : 애플리케이션 커서를 열고 → 루프 내에서 또다른 SQL이나 서브 프로시저를 호출하면서 → "같은 처리"를 "반복"합니다.
  • 집합적 프로그램
    : One SQL로 구성하거나, 집합적으로 정의된 여러 SQL을 단계적으로 실행합니다.
구분 튜닝 방안
절차형 프로그램 - 병목을 일으키는 개별 SQL을 찾아 I/O 튜닝: 인덱스를 재구성하고 액세스 경로를 최적화
- 프로그램 Parallel 활용: 메인 SQL이 읽는 데이터 범위를 달리하여 프로그램을 동시에 여러 개 수행
- Array Processing 활용
- 가능하다면 One SQL 위주 프로그램으로 다시 구현 
집합적 프로그램
(One SQL)
- 병목을 일으키는 오퍼레이션을 찾아 I/O 튜닝:
 (1) Index scan 보다는 Full Table Scan 방식으로 처리
 (2) NL Join 보다는 Hash Join 방식으로 처리
- 임시 테이블 활용
- 파티션 활용
- 병렬처리 활용: SQL문이 수행해야 할 작업 범위를 여러 개 작은 단위로 나누어 여러 프로세스(또는 스레드)가 동시 처리하는 것을 의미함

 

 

 

✏️ 2-1. 병렬처리 활용: Granule

  • Granule: 데이터를 병렬로 처리할 때 일의 최소 단위를 말합니다.
  • Granule의 종류
    • 종류 1: 블록 기반 Granule
      • 대부분의 병렬 오퍼레이션에 적용되는 기본 작업단위입니다.
      • 파티션 여부와 상관없이 병렬도를 지정할 수 있습니다.
      • Granule 할당은 QC가 수행합니다.
      • 실행계획 표기: PX BLOCK ITERATOR
    • 종류 2: 파티션 기반 Granule (=파티션 Granule)
      • 하나의 파티션은 하나의 병렬프로세스가 처리합니다. (프로세스 하나가 파티션 두 개 처리 XXX)
      • 병렬도는 전체 파티션 개수 이하로 설정 가능합니다.
      • 실행계획 표기: PX PARTITION RANGE ALL 또는 PX PARTITION RANGE ITERATOR

 

✏️ 2-2. 병렬처리 활용: IN-OUT 오퍼레이션

구분 명칭 설명 Intra/Inter
Operation Parallelism
오퍼레이션
S → P Parallel From Serial QC가 읽은 데이터를
테이블 큐를 통해
병렬서버프로세스에게 전송
- 직렬
P → S Parallel To Serial 병렬서버프로세스가 처리한 데이터를
QC에게 전송
Inter 병렬
P → P Parallel To Parallel 데이터를 재분배하는 오퍼레이션*
데이터를 정렬 또는 그룹핑하거나 조인을 위해 동적 파티셔닝할 때 사용
Inter 병렬

*데이터 재분배: Range, Hash, Broadcast, Key, Round-Robin

 


📒 정리하면

  1. 배치 프로그램: 절차형과 집합적(One SQL) 프로그램으로 나뉘며, 각각 다른 튜닝 방안이 적용됩니다.
  2. Granule: 병렬처리에서 작업의 최소 단위로, 블록 기반과 파티션 기반 Granule 두 종류가 있습니다.
  3. IN-OUT 오퍼레이션
    1. S → P (Parallel From Serial)
    2. P → S (Parallel To Serial)
    3. P → P (Parallel To Parallel)

반응형