본문 바로가기
Database/SQLD

옵티마이저

by KkingKkang 2023. 6. 9.

옵티마이저 - db내부 핵심 엔진 

옵티마이저와 실행계획

1. Parser 

1) 문법적, 의미적 오류 확인
2) SQL과 실행계획이 라이브러리 캐시에 존재하는 확인
    (1) 존재하면 (soft parsing) => sql과 실행계획을 라이브러리 캐시에서 찾아 바로 실행
    (2) 존재하지 않으면 (hard parsing) => 옵티마이저를 거쳐서 쿼리비용 계산 후 실행계획 생성

2. Optimizer

1) Query Transformer : 최적화하기 쉽게 형태 변환 시도, 논리적으로 변환 전후 동일해야 함.
2) Estimator : 실행계획에 대한 전체 비용계산 (I/O, cpu, 메모리, 테이블 및 인덱스 통계정보 확인)
3) Plan Generator : 후보군이 할만한 실행계획 생성

3. Row-Source Generator : 실제 실행할 수 있는 코드 형태로 포맷함

4. SQL Engine : SQL 실행

 

옵티마이저 종류

1. 규칙기반(RBO) : 미리 정해 놓은 규칙에 따라 엑세스 경로 평가, 실행계획 선택 

- 규칙 : 경로 별 우선순위, 인덱스 구조, 연산자, 조건절 형태

2. 비용기반(CBO) : 쿼리 수행에 소요되는 일량, 시간을 비용으로 산정

- 통계 항목 : 레코드개수, 블록개수, 하드웨어속성고리(cpu, I/O, 메모리)

 

1. 아래 ㄱ에 해당하는 내용을 작성하시오.

테이블 및 인덱스 등의 통계 정보를 활용하여 SQL문을 실행하는데 소요될 처리시간 및 cpu, I/O 자원량 등을 계산하여 가장 효율적일 것으로 예상되는 실행계획을 선택하는 옵티마이저를 <비용기반 옵티마이저(CBO)> 라 한다.

 

2. 다음 중 실행계획을 통해서 알 수 있는 정보로 가장 부적절한 것은?

1) 엑세스 기법
2) 질의 처리 예상 비용
3) 조인 순서
4) 실제 처리 건수

 

3. 아래 실행계획의 순서에 맞게 작성하시오.

NESTED LOOPS --1
	HASH JOIN --2
		TABLE ACCESS (FULL) TAB1 --3
		TABLE ACCESS (FULL) TAB2 --4
	TABLE ACCESS (BY ROWID) TAB3 --5
		INDEX(UNIQUE SCAN) PK TAB3 --6

노드 형태로 만들어서 제일 왼쪽 아래부터 차례대로 올리기

답 : 3 4 2 6 5 1

 

4. 다음 중 실행계획에 대한 설명으로 가장 부적절한 것은?

1) 실행계획은 SQL 처리를 위한 실행 절차와 방법을 표현한 것이다.
2) 실행계획은 조인 방법, 조인 순서, 액세스 기법 등이 표현된다.
3) 동일 SQL문에 대해 실행계획이 다르면 실행 결과도 달라질 수 있다. ▶︎ 실행 결과는 같아야 함
4) CBO(Cost Based Optimizer)의 실행계획에는 단계별 예상 비용 및 건수 등이 표시된다.

 

5. 다음 중 옵티마이저와 실행계획에 대한 설명으로 부적절한 것을 2개 고르시오.

1) SQL 처리 흐름도는 성능적인 측면의 표현은 고려하지 않는다.
2) 규칙기반 옵티마이저에서 제일 높은 우선순위는 행에 대한 고유 주소를 사용하는 방법이다. (rowid)
3) SQL 처리 흐름도는 인덱스 스캔 및 전체 테이블 스캔 등의 액세스 기법을 표현할 수 있다. 
4) 인덱스 범위 스캔은 항상 여러 건의 결과가 반환된다.

반응형

'Database > SQLD' 카테고리의 다른 글

조인 방식(NL, SORT MERGE, HASH JOIN)  (0) 2023.07.14
인덱스  (0) 2023.07.14
PL/SQL  (0) 2023.06.05
윈도우 함수와 문제풀이3 - 권한  (0) 2023.06.05
윈도우 함수와 문제풀이 2  (0) 2023.06.05

댓글