"PQ REPLICATE 힌트"의 두 판 사이의 차이
DB CAFE
(새 문서: PQ_REPLICATE 힌트 정희락_ 2018. 3. 3. 08:45 12.1 버전에 PQ_REPLICATE 기능이 추가되었다. BROADCAST 분배 방식의 변형으로 볼 수 있다. 테스트를 위해...) |
|||
1번째 줄: | 1번째 줄: | ||
− | PQ_REPLICATE 힌트 | + | === PQ_REPLICATE 힌트 === |
− | + | * 12.1 버전에 PQ_REPLICATE 기능 추가 | |
− | + | * BROADCAST 분배 방식 개선 | |
− | 12.1 버전에 PQ_REPLICATE | ||
− | |||
− | |||
− | |||
− | |||
− | + | # BROADCAST 분배 방식은 병렬 서버에서 테이블을 나눠서 읽은 후 다른 병렬 서버로 데이터를 분배하는 방식 | |
− | + | # 테이블을 8GB로 가정하면 DOP가 8인 경우, 각각의 병렬 서버가 1GB씩 읽은 후 8개의 서버로 1GB씩 분배하므로 I/O는 8GB(1GB*8), 분배량은 64GB(1GB*8*8) | |
− | + | # DOP가 16인 경우에는 I/O는 동일하게 8GB(0.5GB*16)지만, 분배량은 128GB(0.5GB*16*16)로 증가 | |
− | + | # DOP가 커질수록 전송량이 배수적으로 증가하는 구조 | |
− | + | # 이런 현상을 해결하기 위해 추가된 기능이 PQ_REPLICATE 방식 | |
− | + | # PQ_REPLICATE 방식은 각각의 병렬 서버에서 전체 테이블을 읽기 때문에 데이터 분배가 발생하지 않는다. | |
− | + | # DOP가 8, 16인 경우 각각 64GB(8GB*8), 128GB(8GB*16)의 I/O가 발생 | |
− | + | # BROADCAST 분배 시 DOP가 높고 테이블 크기가 작은 경우 분배량 감소를 통한 성능 개선 | |
− | + | # 반대로 잘못된 통계 정보로 인해 크기가 큰 테이블이 PQ_REPLICATE 방식으로 동작할 경우 과도한 I/O로 인해 성능이 저하될 수 있다. | |
− | + | # 1 NO_PQ_REPLICATE 힌트를 사용하면 해당 기능의 동작을 제어할 수 있다. | |
− | + | <source lang=sql> | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | BROADCAST 분배 방식은 병렬 서버에서 테이블을 나눠서 읽은 후 다른 병렬 서버로 데이터를 분배하는 | ||
− | |||
− | 이런 현상을 해결하기 위해 추가된 기능이 PQ_REPLICATE | ||
− | |||
− | 반대로 잘못된 통계 정보로 인해 크기가 큰 테이블이 PQ_REPLICATE 방식으로 동작할 경우 과도한 I/O로 인해 성능이 저하될 수 있다.1 NO_PQ_REPLICATE 힌트를 사용하면 해당 기능의 동작을 제어할 수 있다. | ||
− | |||
SELECT /*+ ORDERED FULL(A) FULL(B) PARALLEL(A 8) PARALLEL(B 8) USE_HASH(B) | SELECT /*+ ORDERED FULL(A) FULL(B) PARALLEL(A 8) PARALLEL(B 8) USE_HASH(B) | ||
PQ_DISTRIBUTE(B BROADCAST NONE) | PQ_DISTRIBUTE(B BROADCAST NONE) | ||
66번째 줄: | 37번째 줄: | ||
| 9 | TABLE ACCESS FULL | T2 | Q1,01 | PCWP | | | | 9 | TABLE ACCESS FULL | T2 | Q1,01 | PCWP | | | ||
------------------------------------------------------------------------- | ------------------------------------------------------------------------- | ||
− | + | </source> | |
− |
2022년 9월 8일 (목) 15:43 판
thumb_up 추천메뉴 바로가기
- DBA { Oracle DBA 명령어 > DBA 초급 과정 > DBA 고급 과정 }
- 튜닝 { 오라클 튜닝 목록 }
- 모델링 { 데이터 모델링 가이드 }
PQ_REPLICATE 힌트[편집]
- 12.1 버전에 PQ_REPLICATE 기능 추가
- BROADCAST 분배 방식 개선
- BROADCAST 분배 방식은 병렬 서버에서 테이블을 나눠서 읽은 후 다른 병렬 서버로 데이터를 분배하는 방식
- 테이블을 8GB로 가정하면 DOP가 8인 경우, 각각의 병렬 서버가 1GB씩 읽은 후 8개의 서버로 1GB씩 분배하므로 I/O는 8GB(1GB*8), 분배량은 64GB(1GB*8*8)
- DOP가 16인 경우에는 I/O는 동일하게 8GB(0.5GB*16)지만, 분배량은 128GB(0.5GB*16*16)로 증가
- DOP가 커질수록 전송량이 배수적으로 증가하는 구조
- 이런 현상을 해결하기 위해 추가된 기능이 PQ_REPLICATE 방식
- PQ_REPLICATE 방식은 각각의 병렬 서버에서 전체 테이블을 읽기 때문에 데이터 분배가 발생하지 않는다.
- DOP가 8, 16인 경우 각각 64GB(8GB*8), 128GB(8GB*16)의 I/O가 발생
- BROADCAST 분배 시 DOP가 높고 테이블 크기가 작은 경우 분배량 감소를 통한 성능 개선
- 반대로 잘못된 통계 정보로 인해 크기가 큰 테이블이 PQ_REPLICATE 방식으로 동작할 경우 과도한 I/O로 인해 성능이 저하될 수 있다.
- 1 NO_PQ_REPLICATE 힌트를 사용하면 해당 기능의 동작을 제어할 수 있다.
SELECT /*+ ORDERED FULL(A) FULL(B) PARALLEL(A 8) PARALLEL(B 8) USE_HASH(B)
PQ_DISTRIBUTE(B BROADCAST NONE)
NO_PQ_REPLICATE(B) */
*
FROM t1 a
, t2 b
WHERE b.c1 = a.c1;
-------------------------------------------------------------------------
| Id | Operation | Name | TQ |IN-OUT| PQ Distrib |
-------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | | | |
| 1 | PX COORDINATOR | | | | |
| 2 | PX SEND QC (RANDOM) | :TQ10001 | Q1,01 | P->S | QC (RAND) |
|* 3 | HASH JOIN | | Q1,01 | PCWP | |
| 4 | PX RECEIVE | | Q1,01 | PCWP | |
| 5 | PX SEND BROADCAST | :TQ10000 | Q1,00 | P->P | BROADCAST |
| 6 | PX BLOCK ITERATOR | | Q1,00 | PCWC | |
| 7 | TABLE ACCESS FULL| T1 | Q1,00 | PCWP | |
| 8 | PX BLOCK ITERATOR | | Q1,01 | PCWC | |
| 9 | TABLE ACCESS FULL | T2 | Q1,01 | PCWP | |
-------------------------------------------------------------------------