[DB][Mysql][0.0.6] 옵티마이저

yun0510·2023년 12월 19일

DB

목록 보기
7/16

1.옵티마이저란

SQL문에 대하여 데이터를 기반으로 최적의 실행 계획은 수립해주는 역할

파서: compiler의 일부로 컴파일러나 인터프리터에서 원시 프로그램을 읽어 명령문등 구문을 해석 가능한 단위로 분할 해주는 역할
딕셔너리: 데이터베이스 서버에서 테이블 구조 정보, 스토어드 프로그램 등의 정보
( 미리 수집해 놓은 오브젝트 통계 및 시스템 통계정보 등 존재함)

2. 규칙기반 옵티마이저(RBO)

규칙(우선 순위)을 가지고 실행계획을 생성

3. 비용기반 옵티마이저(CBO)

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

이때 비용이란 금액이 아닌 예상되는 소요시간 또는 자원 사용량을 의미함

4. 유의사항

1) 검색조건 순서에 따른 실행계획 차이

  • 옵티마이저가 조건 중에 우선를 정하지 못하는 경우 뒤에 나오는 조건을 우선시 하여
    검색조건 순서에 따른 속도 차이가 발생하는 경우가 더러 발생함

2) Join 시 index 유무

  • 조인 컬럼에 대한 인덱스가 양쪽에 존재 : 우선순위가 높은 테이블이 선행 테이블
  • 한쪽에만 인덱스 존재 : 인덱스가 없는 테이블이 선행 테이블
  • 모두 인덱스 존재 안함 : FROM 절 뒤에 나열된 테이블이 선행 테이블
  • 우선순위가 동일 : FROM 절에 나열된 테이블의 역순으로 선행 테이블 선택

출처
아이콘: https://www.flaticon.com/kr/authors/prosymbols-premium

0개의 댓글