Notice
Recent Posts
Recent Comments
Link
«   2025/03   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31
Tags more
Archives
Today
Total
관리 메뉴

개발의변화

옵티마이저 본문

데이터베이스

옵티마이저

refindmySapporo 2024. 3. 20. 10:27
반응형

비용기반(Cost-Based) 옵티마이저(CBO)

- 사용자 쿼리를 위해 후보군이 될만한 실행계획 도출 => 데이터 딕셔너리에 미리 수집해 둔 통계정보를 이용해 각 실행계획의 예상비용 산정

- 통계정보: 데이터량, 컬럼 값의 수, 컬럼 값 분포, 인덱스 높이, 클러스터링 팩터 

규칙기반 옵티마이저의 규칙

규칙기반 옵티마이저의 우선 순위 규칙에서 

 

규칙 1. Single row by rowid:

ROWID를 통해서 테이블에서 하나의 행을 액세스 하는 방식, ROWID는 행이 포함된 데이터 파일, 블록 등의정보를 가지고 있기 때문에 다른 정보를 참조하지 않고도 바로 원하는 행을 엑세스하는 방식

 

규칙 4: Single row by unique or primary key: 유일 인덱스를 통해서 하나의 행을 액세스, (인덱스를 먼저 액세스 -> 인덱스에 존재하는 ROWID 추출하여 테이블의 행을 액세스)

 

이처럼 규칙들이 존재한다.

 

클러스터 조인이 무엇인가 찾아보니

클러스터란?
디스크로부터 데이터를 읽어오는 시간을 줄이기 위해서 조인이나 자주 사용되는 테이블의 데이터를 디스크의 같은 위치에 저장시키는 방법이다.

클러스터 특징
클러스터는 데이터 조회 성능을 향상 시키지만 데이터 저장, 수정, 삭제 또는 한 테이블 전체 Scan의 성능을 감소 시킨다.

클러스터 하기 좋은 테이블
- 주로 조회가 자주 발생하고 수정이 거의 발생하지 않는 테이블
- 컬럼안의 많은 중복 데이터를 가지는 테이블
- 자주 Join되는 테이블

클러스터 Key가 되기 좋은 컬럼
- 데이터 값의 범위가 큰 컬럼
- 테이블 간의 조인에 사용되는 컬럼

클러스터 key가 되기 나쁜 컬럼
- 특정 데이터 값이 적은 컬럼
- 자주 데이터 수정이 발생하는 컬럼
- LONG, LONG RAW 컬럼은 포함할 수 없다.

 

단점: 규칙기반 옵티마이저 조건절에서 '='연산자와 'BETWEEN'연산자가 사용되면 규칙에 따라 '=' 칼럼의 인덱스를 사용하는 것이 보다 적은 일량일 수 있지만 BETWEEN 칼럼이 더 적은 일량일 수 있다. 즉 규칙에 위배되는 예외케이스가 존재하기에 비용기반 옵티마이저를 활용하게 된 것이다.

 

 

비용기반 옵티마이저

- SQL문을 처리하는데 필요한 비용이 가장 적은 실행계획을 선택하는 방식

- 비용: SQL문을 처리하기 위해 예상되는 소요기간 또는 자원 사용량

- 비용을 예측하기 위해 테이블,인덱스,칼럼 등의 다양한 통계정보를 활용한다. => 통계정보가 없는 경우 비용 예측이 불가능해져서 비효율적인 실행계획 생성할 수도 있음

 

비용기반 옵티마이저의 구성 요소

질의 변환기 : 사용자가 작성한 SQL문을 처리하기에 보다 용이한 형태로 변환하는 모듈

대안 계획 생성기: 동일한 결과를 생성하는 다양한 대안 계획을 생성하는 모듈 (연산 방법 번경, 연산 적용 순서 변경, 조인 순서 변경)

비용 예측기: 대안 계획 생성기에 의해서 생성된 대안 계획의 비용을 예측하는 모듈

 

 

 

 

 

반응형

'데이터베이스' 카테고리의 다른 글

인덱스 스캔  (1) 2024.03.18
인덱스 튜닝  (0) 2024.03.14
인덱스 구조 및 탐색  (0) 2024.03.13
SQL 처리과정과 I/O  (0) 2024.03.12
트랜잭션  (0) 2024.03.11