Parallel query

EXEM Knowledge Base

Jump to: navigation, 찾기

[편집] Basic Info

Parallel Query는 동시 접속, 동시 사용이 많은 OLTP 환경보다는 배치나 DW 환경에서 쿼리의 처리 성능을 향상시킬 목적으로 사용된다. Parallel Query는 Parallel Hint를 사용하거나 오브젝트 생성 시에 degree를 지정함으로 사용하며, Full Table Scan, Index Fast Full Scan, Hash Join, partition table의 Local Index Scan 등의 경우 사용될 수 있다.

1. 오브젝트 생성 시 Degree 지정

Create table Test
Parallel (Degree 5)
(id number(2), name varchar2(20));

2. Parallel Hint 사용

Select /*+ Parallel(test,4) */ *
From test;

[편집] Analysis Case

[편집] 부적절한 Degree 설정으로 인한 Parallel Query 수행과다

테이블 생성시 Parallel Degree 및 Instances 값이 default 로 설정되어 있어 인덱스 사용이 가능한 SQL임에도 불구하고 full table scan이 발생하면서 Parallel로 수행되어 성능저하가 발생하였다. DW나 배치 프로그램에서 대용량의 처리 속도를 향상시키기 위해 Parallel Query를 사용하나, OLTP 환경에서는 CPU 사용량 및 Active Session의 수를 증가시키므로 사용하는 것은 성능저하를 유발한다.

그림:5_1_1.jpg 위와 같이 Active Session이 급증하는 구간이 존재한다.

그림:5_1_2.jpg PX DEQ로 시작하는 대기 이벤트는 Parallel 관련이므로, Parallel로 동시에 SQL문이 수행 시, Slave 프로세스가 기동되어 Active Session이 증가함을 유추할 수 있다. 세션이 수행하고 있는 SQL문은 동일한 SQL로 Parallel Hint 가 명시되어있지 않음에도 불구하고 Parallel로 수행되었다. (확인해 본 결과, SQL문이 조회하고 있는 Table의 Degree가 설정되어 있었음.)

alter table TEST parallel ( degree 1 );

와 같이 table의 Parallel degree를 1로 변경하여 Parallel Query의 수행 과다를 해결한다.