오라클 성능 고도화 원리와 해법 II (2016년)
병렬 Order By와 Group By 0 0 4,179

by 구루비 병렬처리 병렬 Order By PARALLEL 병렬 Group By [2017.05.28]


698~706

병렬 order by ,group by

정렬은(order by 절) temp tablespace 를 사용하므로 해당 유저가 어떤 temp tablespace 를 사용하는지 파악 후 작업 필요

select username , default_tablespace, temporary_tablespace from dba_users;

병렬작업엔 분배가 필요하며 그걸 QC 가 실행

병렬처리 사용 예

select /*\+ parallel(emp 2) \*/ sum(sal) ,deptno from emp group by deptno

  SUM(SAL)     DEPTNO
\---\--\--\--\- \--\--\


-\-
      9400         30

     10875         20
      8750         10

Execution Plan
\















-\-
Plan hash value: 3475411915

\





























\-
| Id  | Operation               | Name     | Rows  | Bytes | Cost (%CPU)| Time     |    TQ  |IN-OUT| PQ Distrib |
\



























\-
|   0 | SELECT STATEMENT        |          |     3 |    21 |     3  (34)| 00:00:01 |        |      |    |
|   1 |  PX COORDINATOR         |          |       |       |            |          |        |      |    |
|   2 |   PX SEND QC (RANDOM)   | :TQ10001 |     3 |    21 |     3  (34)| 00:00:01 |  Q1,01 | P->S | QC (RAND)  |
|   3 |    HASH GROUP BY        |          |     3 |    21 |     3  (34)| 00:00:01 |  Q1,01 | PCWP |    |
|   4 |     PX RECEIVE          |          |    15 |   105 |     2   (0)| 00:00:01 |  Q1,01 | PCWP |    |
|   5 |      PX SEND HASH       | :TQ10000 |    15 |   105 |     2   (0)| 00:00:01 |  Q1,00 | P->P | HASH       |
|   6 |       PX BLOCK ITERATOR |          |    15 |   105 |     2   (0)| 00:00:01 |  Q1,00 | PCWC |    |
|   7 |        TABLE ACCESS FULL| EMP      |    15 |   105 |     2   (0)| 00:00:01 |  Q1,00 | PCWP |    |
\



























\-

Statistics
\















-\-
         12  recursive calls
          0  db block gets
         18  consistent gets
          0  physical reads
          0  redo size
        688  bytes sent via SQL*Net to client
        520  bytes received via SQL*Net from client
          2  SQL*Net roundtrips to/from client
          0  sorts (memory)
          0  sorts (disk)
          4  rows processed

병렬힌트 미사용시

  SUM(SAL)     DEPTNO
\---\--\--\--\- \--\--\


-\-
      9400         30

     10875         20
      8750         10

Execution Plan
\















-\-
Plan hash value: 4067220884

\



















--\-
| Id  | Operation          | Name | Rows  | Bytes | Cost (%CPU)| Time     |
\

















--\-
|   0 | SELECT STATEMENT   |      |     3 |    21 |     4  (25)| 00:00:01 |
|   1 |  HASH GROUP BY     |      |     3 |    21 |     4  (25)| 00:00:01 |
|   2 |   TABLE ACCESS FULL| EMP  |    15 |   105 |     3   (0)| 00:00:01 |
\

















--\-

Statistics
\















-\-
          1  recursive calls
          0  db block gets
          7  consistent gets
          0  physical reads
          0  redo size
        688  bytes sent via SQL*Net to client
        520  bytes received via SQL*Net from client
          2  SQL*Net roundtrips to/from client
          0  sorts (memory)
          0  sorts (disk)
          4  rows processed

"구루비 주주클럽 스터디모임" 에서 2016년에 "오라클 성능 고도화 원리와 해법 II " 도서를 스터디하면서 정리한 내용 입니다.

- 강좌 URL : http://www.gurubee.net/lecture/3383

- 구루비 강좌는 개인의 학습용으로만 사용 할 수 있으며, 다른 웹 페이지에 게재할 경우에는 출처를 꼭 밝혀 주시면 고맙겠습니다.~^^

- 구루비 강좌는 서비스 제공을 위한 목적이나, 학원 홍보, 수익을 얻기 위한 용도로 사용 할 수 없습니다.

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입