-
Clustered vs NonClustered데이터베이스 with MSSQL/SQL 튜닝 2022. 4. 13. 17:02
1. Clustered vs NonClustered
- 데이터 접근
Clustered는 실제 데이터가 리프 페이지에 저장되어 있음
Leaf Page = Data Page
데이터는 Clustered Index키 순서로 정렬이 된다.Non-Clustered는 HeapRID의 주소를 참조하여 데이터에 접근함.
2. 클러스티드 인덱스가 논클러스티드 인덱스에 미치는 영향
- Clustered Index 유무에 다른 동작
1) Clustered Index가 없는 경우
- 데이터가 Heap Table이라는 곳에 저장
- Heap RID -> Heap Table로 접근하여 데이터를 추출
2) Clustered Index가 있는 경우- Heap Table이 없음
- Leaf Table에 실제 데이터가 있다.
- Clustered Index의 실제 키 값을 들고 있는다.
- Non-Clustered Index 조회
SELECT * INTO TestOrderDetails FROM [Order Details]; SELECT * FROM TestOrderDetails; -- Non-Clustered 인덱스 추가 CREATE INDEX Index_OrderDetails ON TestOrderDetails(OrderID, ProductID); -- 인덱스 정보 EXEC sp_helpindex 'TestOrderDetails'; -- 인덱스 번호 찾기 SELECT index_id, name FROM sys.indexes WHERE object_id = object_id('TestOrderDetails'); -- Non-Clustered Index조회 -- PageType 1(DATA PAGE) 2(INDEX PAGE) DBCC IND('Northwind', 'TestOrderDetails', 2);
위의 코드를 생성하면 아래와 같은 트리 구조로 인덱스 페이지가 생성이 된다.
928
832 856 857 858 859 860이 때 Clustered Index를 생성해보면 Non-Clustered Index에 미치는 영향을 살펴보자.
CREATE CLUSTERED INDEX Index_OrderDetails_Clustered ON TestOrderDetails(OrderID);
그런데 여기서 클러스티드 인덱스를 생성하면 논 클러스티드의 인덱스 페이지 번호가 재편성이 된다.
그 이유는 클러스티드 인덱스가 생성됨에 따라 실제 데이터가 정렬되어서 기존의 인덱스 페이지 번호도 재편성되기 때문이다. 인덱스 번호는 아래와 같이 재편된다.
1000
960 968 969 970 971 972
그리고 페이지 타입이 2번인걸 알 수 있는데
1번은 DATA PAGE를 뜻하고 2번은 INDEX PAGE를 뜻한다.
클러스티드 인덱스는 1번에서 설명한 것 처럼 Leaf Page = Data Page이기 때문에 1번이 떠야하고
논클러스티드 인덱스는 Index Page가 떠야하므로 2번이 떠야하는데 위에 보시다시피 2번이 뜨는 것을 알 수 있다.
DBCC PAGE('Northwind', 1, 960,3);
그리고 페이지를 조회해보면 UNIQUIFIER(key)가 새로 생겨났는데 OrderID(기존의 Index)에 번호를 매겨서 중복된 값을 구분해주는 역할을 한다.
위의 결과를 통해 Clustered Index를 생성하면 Non-Clustered인덱스에도 영향이 가는 것을 알 수 있다.
정리해보자면, 페이지가 재편성되었고 페이지 내부에는 UNIQUIFIER(key)가 새로 생겨났다.
- Clustered Index 조회
Clustered Index를 조회 해보면 Page Type이 1번인 것을 보아 Leaf Page = Data Page임을 다시 확인할 수 있다.
'데이터베이스 with MSSQL > SQL 튜닝' 카테고리의 다른 글
복합 인덱스 컬럼 순서 (0) 2022.04.15 북마크 룩업 (0) 2022.04.15 Index Scan vs Index Seek (0) 2022.04.14 복합 인덱스 (0) 2022.04.13 인덱스 분석 (0) 2022.04.13