2012년 10월 16일 화요일

실행계획 데이터베이스 튜닝 - 실행계획분석 01

계획
20121022 ~ 20121026 ch1
20121029 ~ 20121102 ch2
20121105 ~ 20121109 ch3
20121112 ~ 20121116 ch4
20121119 ~ 20121123 ch5, ch6
20121126 ~ 20121130 ch7

SQL을 통해 결과를 추출하는 과정에서 여섯 가지 방법을 함께 이용할 수 있다.

실행계획 6가지

1. 테이블 관련 실행 계획

2. 인덱스 관련 실행 계획

3. 정렬 관련 실행 계획

4. 연산자 관련 실행 계획

5. 데이터 연결 관련 실행 계획

6. 파티션 관련 실행 계획

-----------------------------

테이블 관련 실행 계획

1. BY INDEX ROWID - 인덱스 스캔을 통한 테이블 엑세스

2. FULL SCAN - 테이블 전체 스캔

3. BY USER ROWID - 정의된 ROWID에 의한 테이블 엑세스

4. SAMPLE - 표본 데이터 추출

테이블의 컬럼에 인덱스가 존재한다면 해당 인덱스에 엑세스하는 순간 인덱스로부터 ROWID가 제공된다.

ROWID는 하나의 데이터를 찾아가는 유일한 주소

인덱스를 이용하지 않고 테이블에 바로 엑세스한다면 FULL SCAN

CONNECT BY 절을 사용하면 BY USER ROWID 실행 계획

BY INDEX ROWID와 FULL SCAN이 주로 사용됨

-----------------------------

인덱스를 이용한 후에 테이블에 엑세스하면 BY INDEX ROWID 실행 계획이 생성된다.

인덱스에서 생성되는 실행 계획은 9가지

1. INDEX RANGE SCAN

2. INDEX UNIQUE SCAN

3. INDEX AND-EQUALS

4. INDEX FULL SCAN

5. INDEX FAST FULL SCAN

6. INDEX PARALLEL SCAN

7. INDEX SKIP SCAN

8. INDEX MIN/MAX SCAN

9. INDEX JOIN

-------------------------------

선분조건 LINE CONDITION 이 사용된 WHERE 조건의 컬럼이 인덱스를 이용할 경우 INDEX RANGE SCAN이 발생

점조건 POINT CONDITION 일지라도 인덱스를 UNIQUE 인덱스로 생성하지 않았다면 INDEX RANGE SCAN

값을 만족하는 데이터가 세 건이라면 실제 데이터 엑세스는 네 번 이루어진다.

-------------------------------

점 조건 중에서 = 조건을 사용하며 해당 조건에서 UNIQUE 인덱스를 이용하면 INDEX UNIQUE SCAN

UNIQUE 인덱스이더라도 점 조건이 아닌 선분 조건으로 조회된다면 INDEX RANGE SCAN

-------------------------------

보통의 경우 INDEX AND-EQUALS 실행 계획은 성능 최적화 대상이 될 수 있다.

8i에서 도입 10g 부터 폐기

INDEX AND-EQUALS 실행 계획은 두 개의 인덱스를 이용하여 원하는 데이터를 추출

두 컬럼의 인덱스를 추출하여 인덱스 머지를 수행

인덱스 머지
각 인덱스에서 조건을 만족하는 데이터의 ROWID를 확인한 후 1번 인덱스에서 조건을 만족하는 값을 찾으면 확인한 ROWID를 2번 인덱스에서 동일한 ROWID가 확인될때까지 찾는다. 2번 인덱스에서 값을 다 확인한 후 다시 1번 인덱스로 돌아가 다음 값이 조건을 만족하는지 확인한다. 그리고 반복한다.

결합 인덱스를 이용한다면 처리 범위가 감소할 수 있다.

INDEX AND-EQUALS 실행 계획이 빈번히 발생한다면 인덱스 선정을 다시 검토해야 한다.

--------------------------------

DB 실행계획에 대해 공부중이다.

공부한 내용을 요약하면서 다시 한번 상기중인데 양이 많다. 정말 많다.

아무든 계속.

댓글 없음:

댓글 쓰기