정의
Cluster의 사전적 의미를 찾아보면 : 군집, 무리
라는 의미가 있다.
Clusterd : 군집화
라는 의미로 Custered Index 는 '군집화된 인덱스' 라는 뜻이다.
Clusterd Index

저 그림에서 왼쪽은 '등수' index
오른쪽은 '유저' data에 해당한다.
이와같이 Clustered Index는 index와 data의 군집으로 이루어져있다.
index의 '등수'는 1~45의 순서대로 되어있어 데이터를 읽어올때 예들들어 41~43등으로 범위로 읽어오기가 매우 편하다.
이때 43등에 해당하는 '해리, leey94'대신 새로운 유저인 '브라운, probitanima'가 43등으로 들어오려면 어떻게 해야할까?

43등이었던 '해리'를 44등으로 한칸씩, index도 하나씩 늘려 밀어내고 43등자리에 '브라운'을 끼워넣어야한다.
data의 양이 많아질수록 밀어야할 index와 data가 많아지므로
Clustered index의 경우 읽기엔 매우 빠른반면 추가시킬때는 매우 비효율적이다.
Non-Clusterd Index

Non-Clustered 의 같은 경우는 clustered index와 달리 data와 직접적으로 연결되어있지 않고,
사진에서와 같이 45등은 - 123이라는 다른 인덱스와 연결되어있다.(간접참조, Hash Table로 연결됨)
123을 찾으면 뚱이가 45등인지 찾을수 있게 되어있다.
Index가 순서대로 되어있지 않아도 참조 Index가 다르기때문에 Insert하기에 매우 편하다.
결론
Clustered Index는 Data와 Index가 직접 1:1로 연결되어있고,
Non Clustered Index는 Index- 다른Index- Data의 관계로 되어있다.
'코딩조각' 카테고리의 다른 글
| [oracle] oracle SQL 유용한 문자함수 숫자함수 (0) | 2023.01.02 |
|---|---|
| [Spring Security] Spring security의 간단한 과정 (0) | 2022.12.27 |
| STOMP란? pub/sub 이란? (0) | 2022.11.27 |
| [java] IoC란? DI란? 객체지향 프로그래밍이란?(정리) (0) | 2022.11.24 |
| [CS]OSI 7계층이란? (0) | 2022.11.21 |