반응형

# SQLD 2과목_4 SQL 최적화 기본 원리

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

  • 테이블 및 인덱스 등 통계 정보를 활용하여 SQL문을 실행하는데 소요될 처리시간 및 CPU, I/O자원량 등을 계산하여 가장 효율적일 것으로 예상되는 실행계획을 선택하는 옵티마이저

 

## 실행계획

  • 실행계획은 예상정보이다.
  • 실행계획은 조인방법, 조인순서, 액세스 기법, 질의 처리 예상 비용 등이 표현된다.
  • 실행계획은 SQL 처리를 위한 실행 절차와 방법을 표현한 것이다.
  • CBO 실행계획에는 단계별 예상 비용 및 건수 등이 표시된다.
  • 실행방법이 달라진다고 결과가 달라지지는 않는다.

 

## SQL 처리 흐름도

  • SQL의 내부적인 처리 절차를 시각적으로 표현해 준다.
  • 인덱스 스캔, 데이블 전체 스캔 등과 같은 액세스 기법이 표현된다.
  • SQL 처리 흐름도를 보고 실행 시간을 알 수는 없다.

 

## 인덱스

  • 기본 인덱스는 UNIQUE & NOT NULL 제약조건을 갖는다.
  • 보조 인덱스는 UNIQUE 인덱스가 아니라면 중복 데이터 입력이 가능하다.
  • 자주 변경되는 속성을 인덱스로 선정할 경우 UPDATE, DELETE 성능에 악양향을 주므로 인덱스 후보에 적합하지 않다.
  • 규칙기반 옵티마이저는 적절한 인덱스가 존재하면 항상 인덱스를 사용하려고 한다.
  • 비용기반 옵티마이저는 SQL을 수행하는데 있어 소요되는 비용을 계산하여 실행계획을 생성하므로 인덱스가 존재하더라도 전체 테이블 스캔이 유리하다고 판단할 수도 있다.
  • 인덱스 범위 스캔은 결과가 없으면 한 건도 반환하지 않을 수 있다.
  • 인덱스를 생성할 때 정렬 순서를 내림차순으로 하면 내림차순으로 정렬된다.
  • 인덱스 액세스는 테이블 전체 스캔보다 항상 유리하지 않다.
  • 인덱스의 목적은 조회 성능 최적화이다.

 

## 여러 인덱스

  • B-TREE 인덱스 : 브랜치 블록과 리프 블록으로 구성, 일치 및 범위 검색에 적합한 구조이다.
  • CLUSTERED 인덱스 : 리프 페이지가 곧 데이터 페이지
  • BITMAP 인덱스 : 포인터를 저장
반응형

'자격증 > SQLD & SQLP 자격증' 카테고리의 다른 글

데이터베이스  (0) 2022.03.02
UNION, UNION ALL  (0) 2021.10.12
SQLD 2과목_3 SQL 활용  (0) 2021.09.04
SQLD 2과목_2 SQL 기본  (0) 2021.09.04
SQLD 2과목_1 데이터 모델과 성능  (0) 2021.09.02

+ Recent posts