Optimizer
왜 우리는 CBO의 작동원리를 알아야하는가? optimizer가 아주 잘못된 실행계획을 생성하여 어떤 문제가 발생했을 때, 그 문제를 제대로 파악하고 올바른 해결책을 제시하기 위함이다!! 왜 optimizer에 대해서 알아야 할까? |
What's the Optimizer?
- 최소비용, 최적의 경로를 선택해서 사용자가 원하는 작업을 가장 효율적으로 수행할 수 있는 프로시저를 자동으로 생성해는 DBMS의 핵심 기능
- 목표 : 가장 효율적인 Execution Plan을 찾아내는 일
- 한계
- Computing power의 부족
- Optimizing algorithm의 한계
- 제한된 시간 내에 방법 결정
- User data에 대한 이해 부족
- 실행방법을 결정하는데 있어서 오판이 많음
- 실행계획(Execution Plan) : 옵티마이저에 의해 생성된 처리절차를 사용자가 확인할 수 있도록 트리구조로 표현한 것
- 사람이 SQL 실행 ⇒ 옵티마이저가 결과를 얻기 위해 실행계획 및 프로시저(프로그래밍) 생성 ⇒ 사용자가 원하는 결과
- 예제
최적화 수행 단계
- 실행계획 후보군 선별
- 실행계획의 예상비용 산정 : data dictionary에 미리 수집해 놓은 object 통계 및 시스템 통계정보 이용
- 최소비용의 실행계획 선정
참고 문서
문서정보
- 이 문서는 오라클클럽에서 작성하였습니다.
- 이 문서를 다른 블로그나 홈페이지에 게재하실 경우에는 출처를 꼭 밝혀 주시면 고맙겠습니다.~^^
- 출처 : http://www.gurubee.net/pages/viewpage.action?pageId=4948105&
- 오라클클럽 지식창고의 모든 문서는 크리에이티브 커먼즈의 저작자표시-비영리-동일조건변경허락(BY-NC-SA) 라이선스에 따라 자유롭게 사용할 수 있습니다.
출처 : http://www.gurubee.net/pages/viewpage.action?pageId=4948105
'Database > Oracle' 카테고리의 다른 글
[펌] 라이브러리 캐쉬 구조 (0) | 2012.03.18 |
---|---|
[펌] SQL 처리과정 (0) | 2012.03.18 |
Oralce의 HOLD_CURSOR, RELEASE_CURSOR (0) | 2012.03.17 |
[펌]oracle precomiler의 hold_cursor, release_cursor (0) | 2012.03.17 |
[펌] 오라클 파티셔닝 개요(파티션 테이블, 파티션 인덱스) (0) | 2012.03.15 |