행위

10384 event

DB CAFE

Dbcafe (토론 | 기여)님의 2024년 8월 22일 (목) 18:36 판 (10384 event 트레이스)
(차이) ← 이전 판 | 최신판 (차이) | 다음 판 → (차이)
thumb_up 추천메뉴 바로가기


10384 event 트레이스[편집]

alter session set events '10384 trace name context forever , level 16384';

<your parallel query goes here>

alter session set events '10384 trace name context off';
  1. 10384 이벤트에서 쿼리는 여전히 병렬 실행 계획을 가지고 있지만, 쿼리 코디네이터(QC)만 이 SQL 명령을 실행하고 병렬 슬레이브가 시작되지 않습니다.
  2. 따라서 1개의 프로세스만 실행되므로 실제 행과 같은 정보를 더 쉽게 수집할 수 있습니다.
  • 다음 명령은 직렬실행계획(serial paln)을 만들고 병렬 실행 계획과 다르다.
    alter session disable parallel query;
  • 이 예시는 차이를 보여주기 위해 gather_plan_statistics 힌트를 사용
SQL> set linesize 150
SQL> set pagesize 2000
SQL> alter session set events '10384 trace name context forever , level 16384';
SQL>  select /*+  gather_plan_statistics  */ * from emp e;
SQL> select * from TABLE(dbms_xplan.display_cursor( null, null, 'ALL IOSTATS LAST'))
SQL> alter session set events '10384 trace name context off';
Here is the output with the event 16384
------------------------------------------------------------------------------------------
|Id|Operation            |Name|Start|E-Row|E-Byte|Cost| TQ  |IN-OU|PQ Distr |A-Row|Buffer|
------------------------------------------------------------------------------------------
| 1| PX COORDINATOR      |    | 1   |     |      |    |     |     |         | 14  |   9  |
| 2|  PX SEND QC (RANDOM)|:TQ1| 1   | 14  | 518  |  2 |Q1,00|P->S |QC (RAND)| 14  |   9  |
| 3|   PX BLOCK ITERATOR |    | 1   | 14  | 518  |  2 |Q1,00|PCWC |         | 14  |   9  |
|*4|    TABLE ACCESS FULL|EMP | 1   | 14  | 518  |  2 |Q1,00|PCWP |         | 14  |   9  |
------------------------------------------------------------------------------------------
and here is the output without the event 10384
 
------------------------------------------------------------------------------------------
|Id|Operation            |Name|Start|E-Row|E-Byte|Cost| TQ  |IN-OU|PQ Distr |A-Row|Buffer|
------------------------------------------------------------------------------------------
| 1| PX COORDINATOR      |    | 1   |     |      |    |     |     |         | 14  |   2  |
| 2|  PX SEND QC (RANDOM)|:TQ1| 0   | 14  | 518  |  2 |Q1,00|P->S |QC (RAND)|  0  |   0  |
| 3|   PX BLOCK ITERATOR |    | 0   | 14  | 518  |  2 |Q1,00|PCWC |         |  0  |   0  |
|*4|    TABLE ACCESS FULL|EMP | 0   | 14  | 518  |  2 |Q1,00|PCWP |         |  0  |   0  |
------------------------------------------------------------------------------------------
  • 차이점은 2단계에서 4단계까지 볼 수 있는 이벤트가 없으면 A-Row 열이 숫자 0을 보여준다는 것입니다.
  • /*+ gather_plan_statistics */ 힌트는 쿼리 코디네이터의 정보만 수집하고 병렬 슬레이브와 쿼리 코디네이터의 통계를 결합하지 않습니다.
  • 2에서 4까지의 단계는 슬레이브에 의해 실행되며 쿼리 코디네이터가 작업을 수행하지 않습니다. 이것이 A-Row 열에 0이 보이는 이유입니다.
  • 레벨 16384의 이벤트 10384를 사용하는 데 도움이 되며 QC만 작동하고 A-Rows 열은 실제 행 수를 보여줍니다.
  • A-Time과 같은 일부 데이터는 이벤트 10384와 함께 병렬 실행과 직렬 실행 간에 변경될 수 있습니다.
  • 즉, 이벤트가 각 행 단계에서 실제 행과 같은 더 쉬운 정보를 얻는 데 도움이 될 수 있다는 것을 의미한다.
  • 근본적으로 나쁜 실행 계획이 아닌 느린 병렬 문제를 분석할 때 도움이 되지 않을 수 있습니다.
  • 10046으로 세션 추적하기
    이벤트 10046과 10384로 세션을 추적하면 다음을 해야 합니다:
alter session set events '10384 trace name context forever , level 16384';
alter session set events '10046 trace name context forever , level 8';
<your parallel query goes here>
alter session set events '10046 trace name context off';
alter session set events '10384 trace name context off';
  • 힌트 /*+ gather_plan_statistics */의 경우와 같은 효과를 볼 수 있습니다. QC trace파일은 이벤트 10384 레벨 16384를 사용하지 않으면 슬레이브가 작업을 수행하는 행 소스에 대해 0을 보여줍니다.
  • 이벤트 10384 레벨 16384를 사용하면 쿼리 코디네이터에서 1개의 추적 파일만 생성됩니다.