숑숑의 삽질로그
로그인
숑숑의 삽질로그
로그인
clustered VS non-clustered INDEX
숑숑
·
2022년 9월 6일
팔로우
0
Index
db
mysql
0
DB
목록 보기
2/7
항상 뭔가 뜬구름 잡는 것처럼 들렸던 개념이다.
확실히 짚고 넘어가보자
Clustered Index
클러스터링 인덱스 키를 기준으로 정렬된 상태를 유지한다.
mysql
기준, Primary key에 기본으로 적용되는 인덱스다.
테이블 마다 한 개만 적용 가능하다.
leaf node에는 항상 실제 데이터 페이지가 들어있다.
장점
범위 검색에 특화되어 있다.
캐시 hit를 최대화하고 page 전환을 최소화한다.
leaf node에서 원하는 데이터로 바로 이동하므로, 데이터에 보다 빠른 접근이 가능하다.
단점
항상 정렬해야 하므로 insert, update, delete 속도가 느리다.
비연속적인 데이터를 요청할 때는 효과를 보기 힘들다.
Non-Clustered Index
인덱스로 물리적 데이터 위치를 정렬하지 않는다.
인덱스 목록을 분리 저장하기 때문에, 추가적인 저장 공간이 필요하다.
leaf node에는 heap/clustered 인덱스 row에 대한 포인터를 담고 있다.
장점
clustered에 비해 쓰기 성능 오버헤드가 적다.
테이블 당 두개 이상 만들 수 있다.
단점
물리적으로 데이터를 정렬하지 않아 읽기 속도가 느리다.
클러스터링 키 값이 업데이트 될 때마다, 해당 키의 포인터를 가지고 있는 non-clustered index 또한 함께 업데이트 되어야 한다.
참고
https://thenewstack.io/the-difference-between-clustered-and-non-clustered-sql-indexes/
숑숑
툴 만들기 좋아하는 삽질 전문(...) 주니어 백엔드 개발자입니다.
팔로우
이전 포스트
MySQL :: 실행 계획 분석
다음 포스트
MySQL :: 똥쿼리 성능 튜닝기 (3s -> 180ms)
0개의 댓글
댓글 작성