비용기반의 오라클 원리
- 저자 : JONATHAN LEWIS
- 번역 : 비투엔컨설팅
- ISBN : 9788955508734
- 발행(출시)일자 : 2008년 02월 14일
CHAPTER 1. 비용(COST)이란?
옵티마이저 옵션
비용(COST)의 의미
쿼리 변환과 비용 계산
위지위그
요약
테스트 스크립트
CHAPTER 2. 테이블 스캔
시작하면서
지속적인 개선
블록 크기의 효과
CPU costing
CPU costing의 위력
BCHR은 죽었다! BCHR은 영원하다!
병렬 실행
Index Fast Full Scan
파티셔닝
요약
테스트 스크립트
CHAPTER 3. 단일 테이블 선택도
시작하면서
NULL 값 처리
IN-LIST 처리방식
10g 업데이트
범위 기반 검색조건
10g 업데이트
조건절이 두 개일 때의 처리방식
다중 조건일 때의 문제점
요약
테스트 스크립트
CHAPTER 4. 단순 B-tree 액세스
기본적인 인덱스 비용 계산식
시작하면서
유효 인덱스 선택도
유효 테이블 선택도
클러스터링 팩터
인덱스 액세스 비용에 대한 종합적인 검토
알고리즘의 확장
세 가지 선택도
CPU costing
끝으로
요약
테스트 스크립트
CHAPTER 5. 클러스터링 팩터
기준 예제
테이블 경합 줄이기(다중 freelist)
leaf 블록 경합 줄이기(reverse key 인덱스)
테이블 경합 줄이기(ASSM)
RAC에서 경합 줄이기(Freelist Groups)
인덱스 컬럼 순서
인덱스 컬럼 추가
통계정보 바로잡기
sys_op_countchg( ) 테크닉
비공식 전략
끝으로
요약
테스트 스크립트
CHAPTER 6. 선택도 이슈
여러 가지 데이터 타입
날짜 값
문자열 값
부적절한 데이터 타입
‘0’으로 문자 앞쪽을 채울 때의 문제점(leading zeros)
치명적인 문제를 유발하는 디폴트 값
이산(discrete) 값의 위험성
10g 업데이트
놀라운 sysdate
함수의 특성
상관관계에 있는 컬럼
동적 샘플링
옵티마이저 프로파일
이행적 폐쇄
제약이 만든 조건
요약
테스트 스크립트
CHAPTER 7. 히스토그램
시작하면서
일반적인 히스토그램
히스토그램과 바인드 변수
오라클은 언제 히스토그램을 무시하는가?
도수분포 히스토그램
도수분포 히스토그램 조작하기
통계정보 조작 시 주의사항
높이균형 히스토그램
계산
데이터 문제 다시 생각하기
부적절한 데이터 타입
위험한 디폴트 값
요약
테스트 스크립트
CHAPTER 8. 비트맵 인덱스
시작하면서
인덱스 컴포넌트
테이블 컴포넌트
비트맵 결합
낮은 카디널리티
NULL 컬럼
CPU costing
재미있는 사례들
다중 컬럼 인덱스
비트맵 변환
요약
테스트 스크립트
CHAPTER 9. 쿼리 변환
시작하면서
진화(Evolution)
필터링
필터 최적화(Filter Optimization)
스칼라 서브쿼리
서브쿼리 팩토링
Complex View Merging
Pushing Predicates
일반적인 서브쿼리
서브쿼리 파라미터
서브쿼리의 분류
세미 조인(Semi Joins)
안티 조인
안티 조인의 이상 현상
NULL과 NOT IN
Ordered 힌트
스타 변환 조인
스타 조인
향후 전망
요약
테스트 스크립트
CHAPTER 10. 조인 카디널리티
조인 카디널리티 기본
한 쪽에만 필터조건을 적용한 경우
실환경에서의 조인 카디널리티
확장과 예외
범위조건에 의한 조인
부등호 조인
조인하는 두 집합이 완전히 겹치지 않는 경우
히스토그램
이행적 폐쇄
세 개 이상 테이블을 조인할 경우
조인 컬럼에 Null 값을 갖는 경우
구현 이슈
골치 아픈 사항들
어이없는 버그
다른 관점에서의 접근
요약
테스트 스크립트
CHAPTER 11. NL(Nested Loops) 조인
기본 메커니즘
실사례
Sanity Checks
요약
테스트 스크립트
CHAPTER 12. 해시 조인
시작하면서
Optimal 해시 조인
Onepass 해시 조인
Multipass 해시 조인
트레이스 파일
10104 이벤트
10053 이벤트
골칫거리
전통적인 비용계산법
새로운 비용계산법
비교 테스트
다중 테이블 해시 조인
요약
테스트 스크립트
CHAPTER 13. 정렬과 머지 조인
시작하면서
메모리 사용
CPU 사용
sort_area_retained_size
pga_aggregate_target
실제 I/O
정렬 비용
10053 트레이스
비교 테스트
머지 조인
머지 메커니즘
첫 번째 집합을 정렬할 필요가 없는 머지 조인
카테지안 머지 조인
집계
인덱스
집합 연산자
마지막 당부
요약
테스트 스크립트
CHAPTER 14. 10053 트레이스 파일
쿼리문
실행계획
환경
트레이스 파일
파라미터 설정값
쿼리 블록
통계 정보
단일 테이블
Sanity Checks
General Plans
Join order[1]
Join order[2]
Join order[3]
Join order[4]
Join order[5]
Join order[6]
Join order[7]
Join order[8]
Join order[9]
Join order[10]
Join order[11]
Join order[12]
Join order[13]
Join order[14]
Join order[15]
Join order[16]
Join order[17]
Join order[18]
조인 평가 요약
테스트 스크립트
APPENDIX A 업그레이드 시
dbms_stats
도수분포 히스토그램
CPU costing
반올림 오차
바인드 변수 Peeking
조인 컬럼에 NULL 값을 갖는 경우
B-tree에서 비트맵으로 전환
Index Skip-Scans
AND-Equal
인덱스 해시 조인
In-List 조건에 대한 비용계산의 개선
이행적 폐쇄
sysdate 계산식의 개선
구성 컬럼이 모두 NULL인 인덱스 엔트리 포함
pga_aggregate_target
정렬(Sorting)
그룹핑(Grouping)
Sanity Checks
조건식이 컬럼 한계 값을 벗어나는 경우
데이터 타입 조작
옵티마이저 모드
역순정렬 인덱스
Complex View Merging
Unnest 서브쿼리
스칼라 및 필터 서브쿼리
병렬 쿼리의 변화 x 2
동적 샘플링
임시 테이블
딕셔너리 통계정보
APPENDIX B 옵티마이저 파라미터
optimizer_features_enable 570
10053 트레이스 파일 572
v$sql_optimizer_env 577
인덱스 579