검색 여닫기
검색
메뉴 여닫기
205
0
1
1.11천
DB CAFE
둘러보기
대문
최근 바뀜
임의의 문서로
ORACLE
티베로
PostgreSQL
MariaDB
특수 문서 목록
알림
개인 메뉴 토글
로그인하지 않음
만약 지금 편집한다면 당신의 IP 주소가 공개될 수 있습니다.
user-interface-preferences
개인 도구
계정 만들기
로그인
비용기반의 오라클 원리
DB CAFE
보기
읽기
원본 보기
역사 보기
associated-pages
문서
토론
다른 명령
Dbcafe
(
토론
|
기여
)
님의 2024년 9월 30일 (월) 22:33 판
(새 문서: == 비용기반의 오라클 원리 == * 저자 : JONATHAN LEWIS * 번역 : 비투엔컨설팅 * ISBN : 9788955508734 * 발행(출시)일자 : 2008년 02월 14일 ** 절판 https://contents.kyobobook.co.kr/sih/fit-in/458x0/pdt/9788955508734.jpg === CHAPTER 1. 비용(COST)이란? === ==== 옵티마이저 옵션 ==== ==== 비용(COST)의 의미 ==== ==== 쿼리 변환과 비용 계산 ==== ==== 위지위그 ==== ==== 요약 ==== ==== 테스트 스크립트 ==== ---- === CHAPTER 2...)
(차이) ← 이전 판 | 최신판 (차이) | 다음 판 → (차이)
비용기반의 오라클 원리
저자 : 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
마지막 수정
2024년 9월 30일 (월)
목차
맨 위로 돌아가기
목차
1
비용기반의 오라클 원리
1.1
CHAPTER 1. 비용(COST)이란?
1.1.1
옵티마이저 옵션
1.1.2
비용(COST)의 의미
1.1.3
쿼리 변환과 비용 계산
1.1.4
위지위그
1.1.5
요약
1.1.6
테스트 스크립트
1.2
CHAPTER 2. 테이블 스캔
1.2.1
시작하면서
1.2.2
지속적인 개선
1.2.3
블록 크기의 효과
1.2.4
CPU costing
1.2.5
CPU costing의 위력
1.2.6
BCHR은 죽었다! BCHR은 영원하다!
1.2.7
병렬 실행
1.2.8
Index Fast Full Scan
1.2.9
파티셔닝
1.2.10
요약
1.2.11
테스트 스크립트
1.3
CHAPTER 3. 단일 테이블 선택도
1.3.1
시작하면서
1.3.2
NULL 값 처리
1.3.3
IN-LIST 처리방식
1.3.4
10g 업데이트
1.3.5
범위 기반 검색조건
1.3.6
10g 업데이트
1.3.7
조건절이 두 개일 때의 처리방식
1.3.8
다중 조건일 때의 문제점
1.3.9
요약
1.3.10
테스트 스크립트
1.4
CHAPTER 4. 단순 B-tree 액세스
1.4.1
기본적인 인덱스 비용 계산식
1.4.2
시작하면서
1.4.3
유효 인덱스 선택도
1.4.4
유효 테이블 선택도
1.4.5
클러스터링 팩터
1.4.6
인덱스 액세스 비용에 대한 종합적인 검토
1.4.7
알고리즘의 확장
1.4.8
세 가지 선택도
1.4.9
CPU costing
1.4.10
끝으로
1.4.11
요약
1.4.12
테스트 스크립트
1.5
CHAPTER 5. 클러스터링 팩터
1.5.1
기준 예제
1.5.2
테이블 경합 줄이기(다중 freelist)
1.5.3
leaf 블록 경합 줄이기(reverse key 인덱스)
1.5.4
테이블 경합 줄이기(ASSM)
1.5.5
RAC에서 경합 줄이기(Freelist Groups)
1.5.6
인덱스 컬럼 순서
1.5.7
인덱스 컬럼 추가
1.5.8
통계정보 바로잡기
1.5.9
sys_op_countchg( ) 테크닉
1.5.10
비공식 전략
1.5.11
끝으로
1.5.12
요약
1.5.13
테스트 스크립트
1.6
CHAPTER 6. 선택도 이슈
1.6.1
여러 가지 데이터 타입
1.6.2
날짜 값
1.6.3
문자열 값
1.6.4
부적절한 데이터 타입
1.6.5
‘0’으로 문자 앞쪽을 채울 때의 문제점(leading zeros)
1.6.6
치명적인 문제를 유발하는 디폴트 값
1.6.7
이산(discrete) 값의 위험성
1.6.8
10g 업데이트
1.6.9
놀라운 sysdate
1.6.10
함수의 특성
1.6.11
상관관계에 있는 컬럼
1.6.12
동적 샘플링
1.6.13
옵티마이저 프로파일
1.6.14
이행적 폐쇄
1.6.15
제약이 만든 조건
1.6.16
요약
1.6.17
테스트 스크립트
1.7
CHAPTER 7. 히스토그램
1.7.1
시작하면서
1.7.2
일반적인 히스토그램
1.7.3
히스토그램과 바인드 변수
1.7.4
오라클은 언제 히스토그램을 무시하는가?
1.7.5
도수분포 히스토그램
1.7.6
도수분포 히스토그램 조작하기
1.7.7
통계정보 조작 시 주의사항
1.7.8
높이균형 히스토그램
1.7.9
계산
1.7.10
데이터 문제 다시 생각하기
1.7.11
부적절한 데이터 타입
1.7.12
위험한 디폴트 값
1.7.13
요약
1.7.14
테스트 스크립트
1.8
CHAPTER 8. 비트맵 인덱스
1.8.1
시작하면서
1.8.2
인덱스 컴포넌트
1.8.3
테이블 컴포넌트
1.8.4
비트맵 결합
1.8.5
낮은 카디널리티
1.8.6
NULL 컬럼
1.8.7
CPU costing
1.8.8
재미있는 사례들
1.8.9
다중 컬럼 인덱스
1.8.10
비트맵 변환
1.8.11
요약
1.8.12
테스트 스크립트
1.9
CHAPTER 9. 쿼리 변환
1.9.1
시작하면서
1.9.2
진화(Evolution)
1.9.3
필터링
1.9.4
필터 최적화(Filter Optimization)
1.9.5
스칼라 서브쿼리
1.9.6
서브쿼리 팩토링
1.9.7
Complex View Merging
1.9.8
Pushing Predicates
1.9.9
일반적인 서브쿼리
1.9.10
서브쿼리 파라미터
1.9.11
서브쿼리의 분류
1.9.12
세미 조인(Semi Joins)
1.9.13
안티 조인
1.9.14
안티 조인의 이상 현상
1.9.15
NULL과 NOT IN
1.9.16
Ordered 힌트
1.9.17
스타 변환 조인
1.9.18
스타 조인
1.9.19
향후 전망
1.9.20
요약
1.9.21
테스트 스크립트
1.10
CHAPTER 10. 조인 카디널리티
1.10.1
조인 카디널리티 기본
1.10.2
한 쪽에만 필터조건을 적용한 경우
1.10.3
실환경에서의 조인 카디널리티
1.10.4
확장과 예외
1.10.5
범위조건에 의한 조인
1.10.6
부등호 조인
1.10.7
조인하는 두 집합이 완전히 겹치지 않는 경우
1.10.8
히스토그램
1.10.9
이행적 폐쇄
1.10.10
세 개 이상 테이블을 조인할 경우
1.10.11
조인 컬럼에 Null 값을 갖는 경우
1.10.12
구현 이슈
1.10.13
골치 아픈 사항들
1.10.14
어이없는 버그
1.10.15
다른 관점에서의 접근
1.10.16
요약
1.10.17
테스트 스크립트
1.11
CHAPTER 11. NL(Nested Loops) 조인
1.11.1
기본 메커니즘
1.11.2
실사례
1.11.3
Sanity Checks
1.11.4
요약
1.11.5
테스트 스크립트
1.12
CHAPTER 12. 해시 조인
1.12.1
시작하면서
1.12.2
Optimal 해시 조인
1.12.3
Onepass 해시 조인
1.12.4
Multipass 해시 조인
1.12.5
트레이스 파일
1.12.6
10104 이벤트
1.12.7
10053 이벤트
1.12.8
골칫거리
1.12.9
전통적인 비용계산법
1.12.10
새로운 비용계산법
1.12.11
비교 테스트
1.12.12
다중 테이블 해시 조인
1.12.13
요약
1.12.14
테스트 스크립트
1.13
CHAPTER 13. 정렬과 머지 조인
1.13.1
시작하면서
1.13.2
메모리 사용
1.13.3
CPU 사용
1.13.4
sort_area_retained_size
1.13.5
pga_aggregate_target
1.13.6
실제 I/O
1.13.7
정렬 비용
1.13.8
10053 트레이스
1.13.9
비교 테스트
1.13.10
머지 조인
1.13.11
머지 메커니즘
1.13.12
첫 번째 집합을 정렬할 필요가 없는 머지 조인
1.13.13
카테지안 머지 조인
1.13.14
집계
1.13.15
인덱스
1.13.16
집합 연산자
1.13.17
마지막 당부
1.13.18
요약
1.13.19
테스트 스크립트
1.14
CHAPTER 14. 10053 트레이스 파일
1.14.1
쿼리문
1.14.2
실행계획
1.14.3
환경
1.14.4
트레이스 파일
1.14.5
파라미터 설정값
1.14.6
쿼리 블록
1.14.7
통계 정보
1.14.8
단일 테이블
1.14.9
Sanity Checks
1.14.10
General Plans
1.14.11
Join order[1]
1.14.12
Join order[2]
1.14.13
Join order[3]
1.14.14
Join order[4]
1.14.15
Join order[5]
1.14.16
Join order[6]
1.14.17
Join order[7]
1.14.18
Join order[8]
1.14.19
Join order[9]
1.14.20
Join order[10]
1.14.21
Join order[11]
1.14.22
Join order[12]
1.14.23
Join order[13]
1.14.24
Join order[14]
1.14.25
Join order[15]
1.14.26
Join order[16]
1.14.27
Join order[17]
1.14.28
Join order[18]
1.14.29
조인 평가 요약
1.14.30
테스트 스크립트
1.14.31
APPENDIX A 업그레이드 시
1.14.32
dbms_stats
1.14.33
도수분포 히스토그램
1.14.34
CPU costing
1.14.35
반올림 오차
1.14.36
바인드 변수 Peeking
1.14.37
조인 컬럼에 NULL 값을 갖는 경우
1.14.38
B-tree에서 비트맵으로 전환
1.14.39
Index Skip-Scans
1.14.40
AND-Equal
1.14.41
인덱스 해시 조인
1.14.42
In-List 조건에 대한 비용계산의 개선
1.14.43
이행적 폐쇄
1.14.44
sysdate 계산식의 개선
1.14.45
구성 컬럼이 모두 NULL인 인덱스 엔트리 포함
1.14.46
pga_aggregate_target
1.14.47
정렬(Sorting)
1.14.48
그룹핑(Grouping)
1.14.49
Sanity Checks
1.14.50
조건식이 컬럼 한계 값을 벗어나는 경우
1.14.51
데이터 타입 조작
1.14.52
옵티마이저 모드
1.14.53
역순정렬 인덱스
1.14.54
Complex View Merging
1.14.55
Unnest 서브쿼리
1.14.56
스칼라 및 필터 서브쿼리
1.14.57
병렬 쿼리의 변화 x 2
1.14.58
동적 샘플링
1.14.59
임시 테이블
1.14.60
딕셔너리 통계정보
2
APPENDIX B 옵티마이저 파라미터
3
optimizer_features_enable 570
4
10053 트레이스 파일 572
5
v$sql_optimizer_env 577
6
인덱스 579