728x90
반응형
SMALL
클러스터드 인덱스 vs 넌클러스터드 인덱스
인덱스는 <키,포인터>구조로서 보통 레코드에 빠르게 접근하기 위해 사용된다.
DB에서는 두 종류의 인덱스가 존재한다. 그 차이를 알아보자.
인덱스가 없는 경우의 구조
데이터가 삽입된 순서대로 페이지가 구성된다.
클러스터드 인덱스
- 테이블 전체가 정렬된 인덱스가 되는방식, 실제 데이터와 무리를 지어 인덱싱되므로 클러스터드 인덱스라 부른다.
- 데이터와 함께 전체 테이블이 물리적으로 정렬된다. Create, Delete, Update 할때마다 재정렬된다.
- 클러스터드 인덱스는 테이블 당 하나만 만들 수 있다.
- mysql 에서는 자동으로 PK를 설정하면 클러스터드 인덱스가 된다.(default)
넌클러스터드 인덱스
- 넌클러스터드 인덱스는 보조 인덱스(Secondary Index)라고도 불린다.
- 인덱스 페이지만 정렬되어있고, 데이터 페이지는 정렬되지 않는다. 즉 , 물리적으로 테이블을 정렬하지 않는다.
- 정렬된 별도의 인덱스 페이지를 생성한다. 페이지번호+ #offset 으로 구성되어 데이터 페이지의 특정 행을 가리킨다. 책에서의 목차와 비슷한 개념이다.
- 넌클러스터드 인덱스는 테이블 당 여러개를 생성할 수 있다.
비교?
- Create, Delete, Update가 빈번한 경우 클러스터드 인덱스의 성능이 넌클러스터드 인덱스 보다 나쁠 수 있다.
- select의 경우 모두 정렬이 되있는 클러스터드 인덱스가 성능이 좋을 수 있다.
- 넌클러스터드 인덱스는 별도의 인덱스 페이지를 생성하므로 클러스터드 인덱스보다 더 많은 저장공간을 필요로 한다.
참고:
728x90
반응형
LIST
'나의 주니어 개발 일기 > DB' 카테고리의 다른 글
커버링 인덱스, 클러스터드 인덱스, 넌클러스터드 인덱스 (1) | 2024.07.26 |
---|---|
DB Replication 해보기 (master-slave) by 도커 컴포즈 (0) | 2024.05.17 |
커버링 인덱스 사용했을때 성능차이 (0) | 2024.04.23 |
docker compose 로 db 생성 (0) | 2024.03.05 |
[MYSQL] 백업로그 활성화 해두자 (0) | 2022.07.21 |