where에서 가장 먼 조건부터 실행하는데 바인드변수나 다른 변수시에는 이것들을 먼저 실행한다
결합인덱스중 사용하지 않은 인덱스 다음 인덱스의 경우 사용하지 못한다?
SQL 보는법?
옵티마이저의 통계 유형
테이블 통계 dba_tab_statistics
행수
블록수
편균행길이
인덱스 통계 dba_ind_statistics
b트리 레벨
구분키
최하위 블록수(leaf)
클러스터링 팩터
시스템 통계 sys_aux_stats$
I/O 성능 및 활용률
CPU 성능 및 활용률
다이내믹 샘플링
통계가 없거나 신뢰할 수 없는 통계일때 등장한다
카디널리티의 값은 올림처리도 하고 정확한 값은 아님
조나단 루이스
COST란 I/O와 CPU를 이용한 시간 중 가장 좋은 시간을 COST로 나타난다 싱글블록I/O를 기준
옵티마이저가 문장을 수행하는데 걸릴 것이라고 예상하는 추측시간
CBO란 하나의 SQL 에 대한 여러 개의 실행계획 가운데 가장 cost가 적은 실행계획을 선택
목적은 대상 로우를 처리하는데 필요한 자원 사용의 최소화
- 데이터를 빨리 처리하는데 목적
비용 산정 요소는 다양하다
인라인뷰는 밖으로 빼거나 view로 실행한다
CBO의 성능을 최적으로 유지하기 위해서는 analyze object이 중요하다
예측 시간
= CPU TIME + I/O TIME에 대한 예측 시간
CPUTIME + Single block I/O TIME + MULTI BLOCK I/O TIME
COST = 예측 시간 / 싱글 블락 I/O
= (싱글블락 I/O COUNT + MULTI BLOCK I/O TIME / Single block I/O Time) +
(CPU TIME / Single block I/O time)
통계에서 얻을 수 있는 두가지 튜닝 포인트
주: db block gets는 데이터베이스에서 현재 블록을 읽은 횟수를 나타내고, consistent
gets는 특정 SCN(시스템 변경 번호)을 만족해야 하는 블록을 읽은 횟수를 나타내며,
physical reads는 디스크에서 블록을 읽은 횟수를 나타냅니다. 일반적으로 모니터되는 두
가지 통계는 db block gets와 consistent gets입니다. 이러한 통계는 검색된 행 수에
비해 낮아야 합니다. 정렬은 디스크보다는 메모리에서 수행되어야 합니다.
'스터디북' 카테고리의 다른 글
[11/27] Plan_table (0) | 2015.11.27 |
---|---|
[11/27] 10053 trace (0) | 2015.11.27 |
[11/26] Optimizer 용어들 (0) | 2015.11.26 |
[11/26] exec print_table (0) | 2015.11.26 |
[11/26] partition table (0) | 2015.11.26 |