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
[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 |