SQLD) 과목 2 – 최적화 기본

섹션 1. 옵티마이저

1. 옵티마이저

– SQL은 처리 과정이 아닌 사용자의 요구 사항만 설명합니다.

* SQL 문을 실제로 실행하기 전에 최적의 실행 계획을 찾아야 합니다.

옵티마이저: 다양한 실행계획 중 사용자의 요구에 맞는 최적의 실행계획 확인

* SQL이 실행되어야 하는 방법과 순서 지정

– 유형: 규칙 기반(RBO), 비용 기반(CBO)


1) 규칙 기반 옵티마이저


규칙 1: ROWID로 테이블의 행 인덱싱

규칙 4: 고유 인덱스로 행에 액세스하고 인덱스에 먼저 액세스한 다음 인덱스의 ROWID를 추출하여 행에 액세스

규칙 8: 복합 인덱스로 검색할 때 복합 인덱스 간에 우선 순위 규칙이 적용됩니다.

– 인덱스 일치율이 높을수록 우선순위가 높음

– 인덱스 일치율이 같을 경우 구성 컬럼의 개수에 우선순위를 부여한다.

* 인덱스 일치율 = 질의문에서 등호조건(=)으로 사용된 인덱스 컬럼의 개수 / 인덱스를 구성하는 컬럼의 개수

– 첫 번째 열부터 연속된 경우만 일치로 인식

규칙 9: 단일 열 인덱스에서 ‘=’ 조건으로 검색

규칙 10: 두 범위를 모두 인덱스가 생성된 열로 제한하여 검색(Like, Between)

규칙 11: 범위를 인덱스가 생성된 열로만 제한하는 형식으로 검색(예: A > 10)

규칙 15: 병렬화 가능

2) 비용 기반 옵티마이저

– 규칙 기반 옵티마이저의 한계: 몇 가지 규칙만으로 모든 실제 상황을 설명하기 어려움

  • 특성

– SQL 처리에 소요되는 예상 비용, 소요 시간, 자원 소모를 최소화할 수 있는 방안 필요

– Table, Index Column 등 Object에 대한 통계정보 및 통계시스템정보 활용

* 정확한 통계정보 관리는 Cost-Based Optimization에서 중요한 요소

– 통계 정보, dbms 버전 및 dbms 설정 정보에 따라 동일한 SQL 문에 대해 서로 다른 실행 계획을 생성할 수 있습니다.

  • 구성
쿼리 변환기 SQL 문을 작업하기 쉬운 형식으로 변환
대체 계획 생성기 동일한 결과를 가져오는 다양한 대안 계획 수립
– 가능한 모든 계획이 생성되지 않기 때문에 최선의 대안을 간과할 수 있음
계산자 다양한 통계 정보를 활용한 대안 계획 비용 추정


2. 추진계획

– 접속순서, 접속기술, 접속기술, 최적화정보 등으로 구성

– Join 기법: NL Join, Sort Merge Join, Hash Join 등

– 접근 기술: 인덱스 스캔, 전체 테이블 스캔

– 최적화 정보는 실제 실행 결과가 아닌 통계 정보를 기반으로 예측

* 비용 : 상대적 비용 정보 (숫자가 낮을수록 좋음)

* 맵: 주어진 조건을 만족하는 행의 개수

* 바이트: 결과 집합이 차지하는 메모리 양입니다.