트러블슈팅 오라클 퍼포먼스 2판 (2017년)
기초사항 및 아키텍처 0 0 22,180

by 구루비스터디 쿼리 변환 쿼리 옵티마이저 [2023.09.08]


쿼리 옵티마이저 개요

  • 쿼리 옵티마이저는 SQL 엔진의 구성요소 중의 하나로, 적절한 시간 내에 효율적인 실행계획을 만들어낸다.


기초 사항

  • 최적의 실행 계획을 찾기 위해서 모든 실행 계획의 후보들로 구성된 탐색 공간(search space)를 조사
  • 여러 실행 계획들의 비용을 추정하여 가능 낮은 비용의 실행 계획을 선택
  • 휴리스틱(heuristic) 선택을 기반으로 가장 유력한 실행 계획부터 시작하여 실행 계획들을 평가하는데, 이 과정에서 가장 비용이 낮은 실행 계획을 찾아냈거나 대안 실행 계획들을 너무 많이 탐색했다고 판단될 경우에는 평가를 종료(branch-and-bound 알고리즘)


쿼리 옵티마이저 영향 요소
시스템 통계데이터베이스 엔진이 실행되는 장비와 스토리지 서브시스템의 성능 수치(7장)
오브텍트 통계데이터 딕셔너리에 저장되는 테이블, 인덱스, 칼럼 통계(8장)
제약조건NOT NULL 제약조건, Unique Key 제약조건, PK 제약조건, 외래키 제약저건, 일부 체크(check) 제약조건 등을 활용
물리설계테이블 유형, 인덱스 유형, 컬럼 순서(7장, 16장)
SQL controlstored outline, SQL profiles, SQL plan baseline
실행 환경데이터 베이스 파라미터
바인드 변수바인드 변수, 바인드 변수의 데이터타입
동적 샘플링쿼리 최적화를 하는 동안 추가 통계를 동적으로 수집
카디널리티 피드백SQL에 대한 비용 추정이 정확하지 않을 경우, SQL 실행 후 재최적화
데이터베이스 버전(패치)데이터베이스 버전에 따라 동작 방식이 다름


아키텍처

파서(parser)실행할 SQL을 파싱된 형태로 쿼리 옵티마이저에게 전달
논리 옵티마이저여러 가지 쿼리 변환 기술을 적용하여 의미상으로 동일한 새로운 SQL 생성, 최상의 쿼리 변환 조합을 찾음
물리 옵티마이저논리 옵티마이저에서 생성된 SQL 실행 계획의 비용 계산, 최저 비용 실행 계획을 선택(가장 효율적인 시행 계획을 찾기 위해 탐색 공간을 조사
비용 추적기물리 옵티마이저로부터 전달받은 실행 계획에 대한 비용을 계산
로우 소스 생성기실행 계획을 로우 소스 오퍼레이션 트리로 변환되어 라이브러리 캐시에 저장
실행 엔진로우 소스 생성기가 생성한 로우 소스 오퍼페이션을 실행(카디널리티 피드백 실행)
"데이터베이스 스터디모임" 에서 2017년에 "전문가를 위한 트러블슈팅 오라클 퍼포먼스(Second Edition) " 도서를 스터디하면서 정리한 내용 입니다.

- 강좌 URL : http://www.gurubee.net/lecture/4350

- 구루비 강좌는 개인의 학습용으로만 사용 할 수 있으며, 다른 웹 페이지에 게재할 경우에는 출처를 꼭 밝혀 주시면 고맙겠습니다.~^^

- 구루비 강좌는 서비스 제공을 위한 목적이나, 학원 홍보, 수익을 얻기 위한 용도로 사용 할 수 없습니다.

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입