brunch

You can make anything
by writing

C.S.Lewis

by 브래드 Mar 14. 2023

SQLD 요약정리, 5편

5. SQL 최적화 기본원리

안녕하세요, 브래드입니다.

오늘은 SQLD 요약정리 개념편 마지막 시간으로, 5장인 SQL 최적화 기본원리에 관해 함께 공부해 보아요.



5. SQL 최적화 기본원리

  (1) 옵티마이저와 실행계획

    1-1. 옵티마이저 개념

        - 옵티마이저란 사용자가 질의한 SQL문에 대한 최적의 실행방법을 결정하는 역할을 수행함

        - 다양한 실행 방법들 중에서 최적의 실행방법을 결정하는 것이 옵티마이저의 역할임



    1-2. 비용기반 옵티마이저(CBO

        - SQL문을 처리하는데 비용이 가장 적게 드는 실행계획을 선택하는 방식

            *비용이란 SQL문을 처리하는데 예상되는 시간 또는 자원을 의미함

        - 테이블, 인덱스 등의 통계 정보와 시스템 통계정보를 이용하여 최적의 실행계획을 도출함




  (2) 인덱스

    2-1. 인덱스 개념

        - 인덱스는 원하는 데이터를 쉽게 찾을 수 있도록 하는 개념임

        - 검색조건에 부합하는 데이터를 빠르게 검색할 수 있음

        - 과도하게 많은 인덱스가 존재할 경우 DML 작업 시 부하가 발생함



    2-2. 트리기반 인덱스

        - 루트 블록, 브랜치 블록, 리프 블록

        - 가장 상위에 존재하는 블록이 루트 블록, 브랜치 블록은 분기를 목적으로 하는 블록, 리프 블록은 트리의 가장 아래 단계에 존재하는 블록

            *리프 블록은 인덱스를 구성하는 칼럼의 데이터와 해당 데이터를 가지고 있는 행의 위치를 가리키는 레코드 식별자인 ROWID로 구성되어 있음







  (3) 풀 테이블 스캔/인덱스 스캔

    3-1. 풀 테이블 스캔

        - 테이블에 존재하는 모든 데이터를 읽어가면서 조건에 맞으면 결과로 추출하고 조건에 맞지 않으면 버리는 방식

        - 풀 테이블 스캔으로 읽은 블록은 재 사용성이 낮다고 판단하여 메모리 버퍼 캐시에서 금방 제거될 수 있도록 관리함



    3-2. 인덱스 스캔 

        - 인덱스를 읽어서 대상 ROWID를 찾으면 해당 ROWID로 다시 테이블을 찾아가야 하므로 TABLE RANDOM ACCESS가 발생함

*인덱스 범위 스캔: 인덱스를 이용하여 한 건 이상의 데이터를 추출하는 방식
*인덱스 유일 스캔: 인덱스를 이용하여 단 하나의 데이터를 추출하는 방식. 유일 인덱스는 반드시 '=' 조건으로 조회해야 함.




  (4) 조인 수행 원리

    4-1. 조인 개념

        - 두 개 이상의 테이블을 하나의 집합으로 만드는 연산

        - 3개 이상의 테이블을 조인한다고 해도, 특정 시점에 2개의 테이블 단위로 조인됨

        - 각각의 조인 단계에서는 서로 다른 조인 기법이 사용될 수 있음


1) NL조인
    - 순차적
    - Random Access 위주
    - 대량의 테이블에서 소량의 집합만을 사용할 때 활용함
    - 조인 조건이 중요함
    - 온라인 OLTP 환경에 적합함

2) Sort Merge Join
    - 동시성
    - 조인 조건가 무관함
    - PGA 과다 사용 우려

3) HASH HOIN
    - 대량의 데이터 처리가 필요하고, 쿼리 수행 시간이 오래 걸리는 대용량 테이블을 조인할 때 활용
    - NL조인처럼 Random Access 부하가 없고, Sort Merge Join처럼 정렬 부하가 없음
    - 선행 테이블이 작으면 작을수록 효과적임
    - '=' 조건에서만 사용 가능





지금까지 SQLD 요약정리 5편으로 SQL 최적화 기본원리에 관해 함께 알아보았습니다.

1편 데이터 모델링의 이해부터, 5편 옵티마이저 개념까지 살펴보며 SQLD 시험에 필요한 핵심적인 내용들을 살펴보았습니다.


시험 전에 요약본 느낌으로 읽어보고 가신다면, 충분히 도움받을 수 있으리라 생각합니다.


브래드였습니다. 감사합니다.

브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari