[MYSQL] Cluster Index

반응형
Cluster Index 란

-.  MySQL에서 클러스트링 인덱스는 InnoDB와 TokuDB 스토리지 엔진에만 지원하며, 나머지 스토리지 엔진에서는 지원되지 않는다. 

-. 클러스터링 인덱스는 PK에 대해서만 적용되는 내용이다. 

-. 테이블당 1개만 생성가능하다. 

-. PK값이 비슷한 레코드끼리 묶어서 저장하는 것을 클러스터링 인덱스라 한다.

 

구조

-. 루트 노드, 리프 노드로만 구성되어 있으며, 리프 노드가 곧 데이터이다. 

-. 클러스터링 인덱스라 함은 결국 테이블 자체가 하나의 인덱스 구조로 관리되는 것이다. 

-. 이런점을 보면 클러스터링 인덱스는 인덱스 알고리즘 보다는 테이블 레코드의 저장 방식이라고 볼 수 있다.

 

CREATE TABLE employees (
    emp_no INT NOT NULL,
    first_name VARCHAR(20) NOT NULL,
    PRIMARY KEY (emp_no),
    INDEX ix_firstname (first_name)
);

SELECT * FROM employees WHERE first_name = 'Aamer';

 

1. MyISAM
ix_firstname 인덱스를 검색해서 레코드의 주소를 확인레코드의 주소를 이용해 최종 레코드를 가져 옴


2. Inno DB 
ix_firstname 인덱스를 검색해 레코드의 프라이머리 키값을 확인프라이머리 키값을 이용해 다시 한번 테이블을 검색한 후 최종 레코드를 가져옴

 

 

2. Cluster index가 없는 테이블 생성시
-. Mysql의 InnoD의 경우 Primary key, 즉

  • cluster index가 없는 테이블을 생성할 경우
  • 테이블을 생성할 경우 컬럼이 NOT NULL로 구성된 UNIQUE KEY가 있는 경우 클러스터로 사용합니다. 

-. 별도의 키가 없을 경우에는 GEN_CLUST_INDEX라는 이름의 클러스터 인덱스가 생성됩니다.
  -> 자동으로 유니크한 값을 가지도록 증가되는 컬럼을 내부적으로 추가한 후, 클러스터 키로 선택

-. 해당 인덱스는 6바이트 크기로 물리적으로 저장된 순서로 인덱스 값을 부여합니다.

 

 

#참고 

https://dev-ppyong.tistory.com/11

 

Clustering Index란?

클러스터란 여러 개를 하나로 묶는다는 의미로 주로 사용된다. MySQL에서 클러스터링 인덱스는 InnoDB와 TokuDB 스토리지 엔진에서만 지원하며, 나머지 스토리지 엔진에서는 지원되지 않는다. 클러

dev-ppyong.tistory.com

https://enterone.tistory.com/230

 

[MySQL] 클러스터링 인덱스

클러스터란 여러 개를 하나로 묶는다는 의미로 주로 사용됩니다. 인덱스에서 클러스터링은 값이 비슷한 것들을 묶어서 저장하는 형태로 구현되는데, 이는 주로 비슷한 값들을 동시에 조회하는

enterone.tistory.com

https://omty.tistory.com/60

 

[MySQL] 클러스터 인덱스 미생성 테이블

개요 MS-SQL에서는 클러스터 인덱스가 없는 힙 테이블이란 개념이 존재했었는데 MySQL은 테이블 생성 시 내부적으로 클러스터 인덱스가 생성되어 어떤 경우에 해당 인덱스가 생성되는지 알아보겠

omty.tistory.com

 

반응형

'Database > MYSQL' 카테고리의 다른 글

[MYSQL] PLAN 확인 방법 (예측, 실제계획)  (0) 2022.11.01
[MYSQL] 실행된 SQL 쿼리 확인  (0) 2022.10.30
[MYSQL] Lock 구조 & Query  (1) 2022.10.27
[MYSQL] PMM 모니터링  (0) 2022.10.21
[MYSQL] MYSQL 아키텍처  (0) 2022.10.21