반응형
# 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 |