ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • MySql 오브젝트 스캔 유형
    공부하기/데이터베이스 2023. 2. 28. 07:02

    오브젝트 스캔 유형

    1.테이블 스캔 (Table Scan) : 인덱스를 거치지 않고 바로 디스크에 위치한 테이블 데이터에 접근

    (1) 테이블 풀 스캔 (Table Full Scan)

    • 테이블의 처음부터 끝까지 데이터를 훑어보는 방식으로 인덱스를 사용하지 않는 유일한 방식

     

    사용

    • where 접의 조건문을 기준으로 활용할 인덱스가 없는 경우
    • 전체 데이터 대비 대량의 데이터가 필요할 경우 (보통 20%~25%)

     

    2.인덱스 스캔 : 인덱스로 테이블 데이터를 찾아가는 유형

    (1) 인덱스 범위 스캔 (Index Range Scan)

    • 인덱스를 범위 기준으로 스캔한 뒤 스캔 결과를 토대로 테이블 데이터를 찾는 방식

     

    사용

    • BETWEEN ~ AND 구문이나 <, >, LIKE 구문 등 비교 연산 및 구문에 포함될 경우

     

    특징

    • 좁은 범위를 스캔할 때는 성능적으로 매우 효율적
    • 넚은 범위를 스캔할 경우 비효율적인 방식

     

    (2) 인덱스 풀 스캔 (Index Full Scan)

    • 인덱스를 처음부터 끝까지 수행하는 방식

     

    사용

    • 인덱스로 구성된 컬럼만 요구하는 쿼리문에서 수행

     

    특징

    • 모든 컬럼을 읽는 것이 아닌 인덱스 컬럼만 읽는 경우에 발생하기 때문에 상대적으로 풀 스캔에 비해 성능상 유리
    • 인덱스 전 영역을 전부 검색하는 방식인 만큼 sql 튜닝이 필요

    (3) 인덱스 고유 스캔 (Index Unique Scan)

    • 기본 키나 고유 인덱스로 테이블에 접근하는 방식

     

    사용

    • where 절에 = 조건으로 작성
    • 조인 컴럼이 기본 키 또는 인덱스의 선두 열로 설정되었을 때

     

    특징

    • 인덱스를 사용하는 스캔 방식 중 가장 효율적인 스캔 방법

    (4) 인덱스 루스 스캔 (Index Loose Scan)

    • 인덱스의 필요한 부분들만 골라 스캔하는 방식
    • 이미 정렬된 인덱스에서 최댓값이나 최소값이 필요한 경우에 해당

     

    사용

    • 보통 group by 구문이나 MAX(), MIN() 함수가 포함되면 작동

     

    특징

    • 인덱스 범위 스캔처럼 넓은 범위에 전부 접근하지 않고 필요한 데이터와 필요하지 않는 데이터를 구분한 뒤 불필요한 인덱스는 무시한다

    (5) 인덱스 병합 스캔 (Index Merge Scan)

    • 테이블 내에 생성된 인덱스들을 통합해서 스캔하는 방식

     

    사용

    • where 조건절의 열들이 서로 다른 인덱스인 경우
    • 옵티마이저가 해당하는 인덱스를 가져와 모두 활용하는 경우

     

    특징

    • 통합하는 방법으로 결합(Union)과 교차(Intersection) 방식이 있으며 둘 다 실행 계획으로 출력된다.

     

Designed by Tistory.