DB/이론

클러스터형 인덱스 / 보조 인덱스

로파이 2021. 11. 29. 19:35

클러스터형 인덱스

  • 데이터 베이스에 저장된 테이블에서 특정 행 데이터를 빠르게 검색하기 위해 사용한다.
  • B-Tree 자료구조를 이용하여 기준이 되는 컬럼값을 정렬하여 사용한다.
  • 페이지를 단위로 노드가 만들어지며 각 노드는 기준값으로 정렬된 행 데이터로 구성된다.
  • 전체 자료구조는 루트 페이지에서 부터 리프 페이지로 나뉘며 계층 구조를 가지는 트리 형태이다.
  • 각 페이지에 행 데이터가 직접 저장된다.

클러스터형 인덱스의 특징

  • 트리 자료구조로 인덱스를 기준으로 검색이 매우 빠르다.
  • MYSQL에서 PRIMARY KEY로 설정된 컬럼은 자동으로 인덱스가 생성되며 기본적으로 인덱스 컬럼을 기준으로 정렬된 테이블이 출력된다.
  • 삽입, 삭제시 B-Tree 자료구조의 특성 때문에 페이지 병합과 분할이 일어난다.
  • 테이블당 하나만 설정 가능하다.

보조 인덱스

  • 클러스터형 인덱스를 보조하여 사용하는 인덱스로 마찬가지로 빠른 검색을 목적으로한다.
  • 클러스터형과 비슷하게 루트/리프 페이지로 구성되어 있지만 내부 행 데이터가 정렬되어 있지는 않다.
  • 리프 페이지에 직접 데이터가 저장되지 않고 Heap 영역에 저장된 데이터 페이지를 가리키는 페이지 번호와 주소 오프셋 정보가 담긴다.

보조 인덱스의 특징

  • 정렬이 되어 있지 않고 데이터 페이지를 한번 더 참조해야하므로 클러스터형 보다 자료 검색이 느리다.
  • 삽입시 리프 페이지에 추가된 데이터 페이지를 가리키는 정보를 뒤에 삽입하면 되므로 빠르다. 추가적인 분할이 없다.
  • 보조 인덱스는 여러개 생성할 수 있으며 UNIQUE로 설정할 수 있다.

'DB > 이론' 카테고리의 다른 글

RDBMS vs NoSQL  (0) 2022.05.02
무결성 제약 조건  (0) 2022.05.02
트랜잭션 고립 수준에 따른 부정합 문제  (0) 2022.05.01
내부 조인과 외부 조인  (0) 2022.04.30
테이블 정규화  (0) 2022.04.29