[DB / MySQL] 클러스터 인덱스

귀찮Lee·2023년 3월 7일
0

DataBase / MySQL

목록 보기
16/16
post-custom-banner

◎ 클러스터형 인덱스 (Clustered Index)

  • 정의

    • 키 값에 대한 테이블의 데이터 행을 정렬하는 인덱스의 한 유형
    • 테이블의 데이터를 정렬해서 저장되는 순서를 정의
  • 특징

    • 테이블당 하나만 생성 가능
    • 행 데이터를 인덱스로 지정한 열에 맞춰서 자동으로 정렬함

◎ 보조 인덱스 (비클러스터형 인덱스 / Nonclustered Index)

  • 정의

    • 데이터와 인덱스를 각각 다른 위치에 저장
    • 인덱스는 해당 데이터의 위치에 대한 포인터를 포함하고 있다.
  • 특징

    • 테이블당 여러 개 생성 가능
    • 찾아보기에서 먼저 단어를 찾은 후 그 옆에 표시된 페이지로 이동하여 원하는 내용을 찾는 것과 같은 개념

◎ MySQL에서 클러스터형 인덱스, 보조 인덱스

MySQL에서 클러스터형 인덱스

  • MySQL의 PK는 클러스터 인덱스다.
    • 각 Table마다 PK(클러스터 키)와 데이터 주소 쌍의 인덱스를 가지고 있다.
    • PK 조건을 통한 조회는 클러스터형 인덱스를 통해 빠르게 조회가 가능하다.
  • PK 순서에 따라서 데이터 저장 위치가 변경된다.
    • PK 삽입/갱신시에 성능이슈 발생 가능성이 높다.
      (데이터 주소가 순차적으로 밀림)

MySQL에서 보조 인덱스

  • 정렬 관련 데이터와 PK가 쌍을 이루고 있는 데이터이다.
    • 위치에 대한 포인터 : PK
    • 데이터 정보를 직접 갖고 있지 않기 때문에, PK의 데이터 위치가 변경될 때 (보조) 인덱스는 영향을 받지 않는다.

◎ 보조 인덱스를 이용한 탐색 과정

상황 : 이름 순서대로 정렬된 보조 인덱스가 존재하고, 이름이 "이"로 시작하는 사람들 조회

  1. (보조) 인덱스의 정렬된 정보를 통해 관련한 PK들을 빠르게 찾음
  2. 클러스터 인덱스가 PK순으로 정렬되어 있으므로 데이터의 저장 위치를 빠르게 찾음
  3. 저장 위치에 가서 정보를 가져옴

◎ 참고 자료

profile
배운 것은 기록하자! / 오류 지적은 언제나 환영!
post-custom-banner

0개의 댓글