Database/MySQL

[MySQL] 클러스터 인덱스

emhaki 2023. 3. 7. 10:07
728x90
반응형
SMALL

클러스터 인덱스는 아래와 같이 3줄로 요약이 가능하다.

 

1. 클러스터 인덱스는 데이터 위치를 결정하는 키 값이다.

2. MySQL의 PK는 클러스터 인덱스다.

3. MySQL에서 PK를 제외한 모든 인덱스는 PK를 가지고 있다.

출처:https://velog.io/@gillog/SQL-Clustered-Index-Non-Clustered-Index

클러스터 키는 정렬된 자료구조이고 클러스터 키 위치에 따라서 데이터의 주소가 결정된다. 이를 다르게 말한다면 클러스터 키 순서에 따라서 데이터 저장 위치가 변경된다는 뜻이고 데이터 저장 위치가 변경된다는 것은 클러스터 키 삽입 / 갱신 시에 성능이슈가 발생한다. 인덱스를 만들 때마다 pk를 만들게 되므로 PK의 사이즈가 인덱스의 사이즈를 결정하게 된다.

🔎 클러스터 인덱스의 장점

1. PK를 활용한 검색이 빠름(특히 범위 검색)

2. 세컨더리 인덱스들이 PK를 가지고 있어 커버링에 유리

🔎 클러스터 인덱스의 단점

1. 보조인덱스가 PK를 가지고 있어서 전체적으로 인덱스의 크기가 커짐

2. 보조인덱스로 검색을 할 때, PK를 한 번 더 검색해야해서 처리성능 느림

3. 삽입을 어디에 할지 찾아야 되기 때문에 처리 성능이 느림

4. PK를 변경할 때, 레코드를 지우고 다시 INSERT해야하기 때문에 처리성능 느림

 

728x90
반응형