첨부파일의 일부 인덱스명에 오타가 있으니 댓글을 참조하기 바람(2009.11.05)
SQL 튜닝을 할 때 가장 기본적으로 익혀야 하는 것을 꼽으라면 무엇일까?
첫 번째, Data Access Pattern
두 번째, Join Method
위의 두 가지는 기본 중에 기본이다. 이 두 가지는 너무도 중요하기 때문에 튜닝을 시작하는 사람 혹은 튜너를 지망하는 사람들은 보고 또 보아야 한다. 실제로 이두가지를 모두 정복한다면 SQL 튜닝중의 많은 부분을 커버할수 있다. 이것은 비단 오라클 SQL 튜닝만이 아니라 모든 DBMS가 동일 할 것이다.
오늘은 두가지 중에 첫 번째의 Data Access Pattern의 개념에 대해서 이야기 해보자.
Data Access Pattern을 최대한 간단하게 표현하면 아래와 같다.
Index Scan : 인덱스 사용
Full Table Scan : 인덱스 미사용
Rowid : Rowid로 테이블 엑세스
하지만 위의 3가지는 너무나 추상적이다.
위의 3가지를 좀더 상세히 나타내 보자.
Rowid
Index Unique Scan
Index Inlist Iterator
Index Skip Scan
Index Full Scan
Index Fast Full Scan
Bit Map Index Combination
Full Table Scan
3가지가 9가지가 되었다. 이제 제법 실전의 Plan에서 볼 수 있는 모습이 나왔다고 생각할 것이다.
하지만 아직 많이 부족하다.
실전의 Plan에는 위의 모습 보다 더욱 상세한 것이 필요하기 때문이다.
Rowid
Index Unique Scan
Index Range Scan (min/max)
Index Inlist Iterator
Index Inlist Iterator Descending
Index Skip Scan
Index Skip Scan Descending
Index Full Scan
Index Full Scan Descending
Index Full Scan (min/max)
Index Fast Full Scan
BIT MAP OR
BIT MAP AND
BIT MAP MINUS
BIT MAP MERGE
Full Table Scan
드디어 3가지가 18가지가 되었고 실전적인 모습이 되었다.
위의 18가지 중에 한가지라도 찜찜한것이 있으면 첨부파일을 다운받아서 개념을 익히길 바란다.
파일을 배포 할 경우 출처를 밝혀주기 바란다.
파일 3개를 모두 다운 받은후 압축을 풀면 된다.
PS :
여기에 나오지 않은것들이 몇가지 있다. Partition Access Pattern은 이문서에서 언급되지 않았다.
다음 기회에..
Index Join 은 Data Access Pattern에 속하는 것이 아니고 Join method 에 포함되어야 한다.
'Oracle > Data Access Pattern' 카테고리의 다른 글
Partition Access Pattern (13) | 2009.12.24 |
---|---|
모든 상식을 의심하라 (16) | 2009.11.05 |
Oracle11g 에서 Full Table Scan의 성능 향상 (8) | 2009.07.22 |
InList / Concatnation / Range Scan Control 하기 (4) | 2008.12.12 |
Range Partition 적용 테이블의 MIN/MAX 처리시의 성능저하 현상 (2) | 2008.07.28 |