4
Perfect 대대대 대대대대대대 대대 대대대 대대 구구 Nested Loops 구구 Sort Merge 구구 Hash 구구 대대대대대 대대 USE_NL(table / Alias) USE_MERGE(table / Alias) USE_Hash(table / Alias) 대대대대 Any Join Any Join ( 구구 Equi-Join) Equi-Join Only 대대 대대대 1) 구구구구 , 2) 구구구구구 구구 구구구구구 1) Memory, 2) Temporary Segment 1) CPU, Memory, 2) Temporary Segment 대대 구구구구 구구구구 ROW 구구 구구구 , 구구구 구구 구구구 구구구 구구구 구구구 구구 구구 구구구 SORT MERGE 구구 HASH 구구구 구구 FIRST_ROWS 구구구 구구구 구구 구구구구 구구구구 구구구 구구구구구 구구구구 구구구구구 구구 구구구 구구구구 구구구 구구 구구구 구구구 구구구구구 구구구구 구구 구구구구 구구구구 구구구 구구구구구 구구구구 구구구구구 구구 구구구 구구구구 구구구 구구 구구구 구구구구구 SORT MERGE 구구구구 구구구구구 구구 구구구 7.3 구구구구 구구 대대 구구 구구구구 구구구구 구구구 구구구구구 구구구구 구구구구구 구구 구구구 구구구구 구구구 구구 구구구구 구구구 구구 구 구구구 구구 구구구구구 FIRST_ROWS 구구구구구 ALL _ROWS 구구구 구구 구구 HASH 구구구구 구구 구구 구구구구 구구 FIRST_ROW 구 구구 구구구 구구구구 구구 구구

조인의 비교

  • Upload
    yelena

  • View
    41

  • Download
    8

Embed Size (px)

DESCRIPTION

조인의 비교. Nested Loops Join 의 Tuning Factors. ① Nested Loop 은 인덱스에 의한 랜덤 액세스에 기반하고 있기 때문에 대량의 데이터 처리 시 적합하지 않다 . ② Driving Table 로는 테이블의 데이터가 적은 마스터 테이블 이거나 , where 절 조건으로 적절하게 row 를 제어할 수 있는 것이어야 한다 . ③ D riven Table 에는 조인을 위한 적절한 인덱스가 생성되어 있어야 한다 . - PowerPoint PPT Presentation

Citation preview

Page 1: 조인의 비교

Perfect 대용량 데이터베이스 튜닝

조인의 비교구분 Nested Loops 조인 Sort Merge 조인 Hash 조인

옵티마이저 힌트 USE_NL(table / Alias)

USE_MERGE(table / Alias)

USE_Hash(table / Alias)

조인조건 Any JoinAny Join( 주로 Equi-Join)

Equi-Join Only

성능 포인트1) 조인순서 ,2) 조인조건에 대한 인덱스구성

1) Memory,2) Temporary Segment

1) CPU, Memory, 2) Temporary Segment

장점

드라이빙 테이블의 ROW 수가 적거나 , 조인의 연결 고리에 적절한 액세스 경로가 있는

경우 효율적

SORT MERGE 또는 HASH 조인에 비해 FIRST_ROWS 방식에 효율적

조인 연결고리 인덱스가 없거나 조인집합을 구성하는 검색조건이 조인 범위를 줄여주지 못하는 경우 효율적

제한된 메모리로도 실행가능

조인 연결고리 인덱스가 없거나 조인집합을 구성하는 검색조건이 조인 범위를 줄여주지 못하는 경우 효율적

일반적으로 SORT MERGE 조인보다 수행성능이 좋음

오라클 7.3 버젼부터 지원

단점

조인 연결고리 인덱스가 없거나 조인집합을 구성하는 검색조건이 조인 범위를 줄여주지 못하는 경우 비효율적

조인이 되는 두 집합을 모두 정렬해야함

FIRST_ROWS 방식보다는 ALL_ROWS 방식을 위해 설계

HASH 테이블을 위한 많은 메모리가 필요

FIRST_ROW 를 항상 빠르게 출력하는 것은 아님

Page 2: 조인의 비교

Perfect 대용량 데이터베이스 튜닝

Nested Loops Join 의 Tuning Factors

① Nested Loop 은 인덱스에 의한 랜덤 액세스에 기반하고 있기 때문에 대량의 데이터 처리 시 적합하지 않다 .

② Driving Table 로는 테이블의 데이터가 적은 마스터 테이블 이거나 , where 절 조건으로 적절하게 row 를 제어할 수 있는 것이어야 한다 .

③ Driven Table 에는 조인을 위한 적절한 인덱스가 생성되어 있어야 한다 .

④ 연결고리가 되는 컬럼은 사원번호 , 주문번호와 같이 Unique 한 속성을 가진 컬럼 인덱스를 이용하거나 분포도가 좋은 컬럼에 대한 인덱스를 이용할수록 수행 속도는 좋아진다

Page 3: 조인의 비교

Perfect 대용량 데이터베이스 튜닝

Sort Merge Join 의 Tuning Factors

① Sort Merge 조인 (SMJ) 은 조인 결합 조건으로 사용되는 연결고리 컬럼에 인덱스가 생성되어 있지 않은 경우에 빠른 조인을 위하여 사용된다 .

② 조인 하고자 하는 각 테이블에 대해서 독립적으로 데이터를 읽어 들일 때 , 이를 얼마나 빠르게 할 것 인가가 중요하다 .

③ 각 테이블로 부터 읽혀진 데이터를 연결고리가 되는 컬럼에 대하여 정렬을 수행할 때 이를 얼마나 빠르게 할 것인가가 중요하다 .

④ Parallel Processing 을 함께 활용 함으로 테이블에 대한 Full scan 의 속도를 향상시키는 것도 가능하다 .

Page 4: 조인의 비교

Perfect 대용량 데이터베이스 튜닝

Hash Join 의 Tuning Factors

① 주로 방대한 처리 결과가 요구되는 OLTP 시스템이나 데이터웨어하우스에서 사용한다 .

② 많은 하드웨어의 CPU 와 메모리 자원이 필요하다 .

③ CBO 모드에서 옵티마이저가 판단해서 적용할 수 있으며 , 테이블의 통계 정보가 있어야 한다 .

④ 데이터베이스 또는 현재 세션에 옵티마이저 모드가 RULE 이외의 값으로 설정되어야 한다 .

⑤ 물론 Rule base 인 경우에도 힌트를 사용하면 Hash 조인을 사용할 수 있음 (/*+ ORDERED USE_HASH(tab1 tab2) */)

⑥ Hash 조인은 Equi Join 에서만 가능하다 .

⑦ Driving Table 의 row 를 조인하기 위한 인덱스를 꼭 필요로 하지는 않는다 .