개요
병렬 쿼리(Parallel Query)는 대용량 데이터를 효율적으로 처리하기 위해 사용됩니다. 병렬 쿼리 수행 세션과 그 상태를 확인하고자 할 때, 다음과 같은 방법을 통해 관련 정보를 조회할 수 있습니다.
방법
병렬 쿼리를 수행하는 세션 정보 확인
v$px_session 세션에서 확인할 수 있습니다.
Parent/Child 구분, SID, 사용자 정보, 요청된 Degree 등을 파악할 수 있습니다
select decode(a.qcserial#, null, 'PARENT', 'CHILD') stmt_level, a.sid,
a.serial#,
b.username,
a.degree,
a.req_degree
from v$pe_session a, v$session b
where a.sid = b.sid
order by a.qcsid, stmt_level desc;
SQL
복사
세션의 병렬 수행 상태 정보
병렬 수행이 가능한지, 실제 수행되고 있는지 등은 v$session의 아래 컬럼들을 통해 확인할 수 있습니다.
컬럼 | 설명 |
PDML_STATUS | 해당 세션의 현재 parallel DML의 상태를 보여줍니다. |
PDDL_STATUS | 해당 세션의 현재 parallel DDL의 상태를 보여줍니다. |
PQ_STATUS | 해당 세션의 현재 parallel Query의 상태를 보여줍니다. |
해당 컬럼은 DISABLE, ENABLE, FORCE의 값으로 설정이 가능합니다.
•
ENABLE : 힌트나 오브젝트에 병렬 Degree가 설정된 경우에 병렬문을 수행합니다.
•
DISABLE : 힌트나 오브젝트에 PARALLEL 절로 Degree를 정한 경우에도 병렬문을 사용할 수 없습니다.
•
FORCE : 해당 SQL문에 강제로 병렬문을 수행합니다.
참고
•
PQ Sessions → parallel에 사용되는 slave 세션도 v$session을 통해 조회할 수 있으며, QC(Query Coordinator)와 동일한 SQL_ID를 가지고 있습니다.
(PROG_NAME에는 PE_SLAVE로 표시됩니다.)
•
관련 뷰: v$pe_pesplan, v$pe_pesstat, v$pe_session, v$pe_tqstat