2009년 7월 25일 토요일

비클러스터형 인덱스 구조

비클러스터형 인덱스 구조

비클러스터형 인덱스는 다음의 가지 주요 차이점을 제외하고 클러스터형 인덱스와 동일한 B-트리 구조를 갖습니다.

  • 기본 테이블의 데이터 행은 비클러스터형 기반의 순서대로 정렬되거나 저장되지 않습니다.
  • 비클러스터형 인덱스의 리프 계층은 데이터 페이지 대신 인덱스 페이지로 구성됩니다.

테이블이나 뷰에 클러스터형 인덱스나 힙과 함께 비클러스터형 인덱스를 정의할 있습니다. 비클러스터형 인덱스의 인덱스 행에는 비클러스터형 값과 로케이터가 있습니다. 로케이터는 값이 포함된 힙이나 클러스터형 인덱스의 데이터 행을 가리킵니다.

비클러스터형 인덱스 행의 로케이터는 다음과 같이 행에 대한 포인터이거나 행에 대한 클러스터형 인덱스 키입니다.

  • 테이블이 힙인 경우, 테이블에 클러스터형 인덱스가 없는 경우 로케이터는 행에 대한 포인터입니다. 포인터는 파일 ID, 페이지 번호 페이지의 번호로 구성됩니다. 전체 포인터를 RID( ID)라고 합니다.
  • 테이블에 클러스터형 인덱스가 있거나 인덱스가 인덱싱된 뷰에 있는 경우 로케이터는 행에 대한 클러스터형 인덱스 키입니다. 클러스터형 인덱스가 고유한 인덱스가 아니면 SQL Server에서는 uniqueifier라는 내부적으로 생성된 값을 추가하여 중복 키를 고유 키로 변경합니다. 4바이트 값은 사용자에게는 보이지 않습니다. 비클러스터형 인덱스에서 사용하기 위해 클러스터형 키를 고유한 키로 바꿔야 때만 값이 추가됩니다. SQL Server 비클러스터형 인덱스의 리프 행에 저장된 클러스터형 인덱스 키로 클러스터형 인덱스를 찾아 데이터 행을 검색합니다.

비클러스터형 인덱스에는 인덱스에서 사용하는 파티션에 대해 index_id > 0 sys.partitions 행이 하나 있습니다. 기본적으로 비클러스터형 인덱스는 단일 파티션을 사용합니다. 비클러스터형 인덱스가 다중 파티션을 사용하는 경우 파티션은 해당 특정 파티션에 대한 인덱스 행을 포함하는 B-트리 구조를 갖습니다. 예를 들어 비클러스터형 인덱스가 4개의 파티션을 사용하면 파티션마다 하나씩 4개의 B-트리 구조가 있습니다.

비클러스터형 인덱스의 데이터 형식에 따라 비클러스터형 인덱스 구조에는 특정 파티션에 대한 데이터를 저장하고 관리하는 할당 단위가 하나 이상 있습니다. 최소한 비클러스터형 인덱스에는 인덱스 B-트리 페이지를 저장하는 파티션당 하나의 IN_ROW_DATA 할당 단위가 있습니다. 또한 비클러스터형 인덱스에는 LOB(Large Object) 열이 포함된 경우 파티션당 하나의 LOB_DATA 할당 단위가 있습니다. 8,060바이트 크기 제한을 초과하는 가변 길이 열이 포함된 경우 파티션당 하나의 ROW_OVERFLOW_DATA 할당 단위도 있습니다. 할당 단위에 대한 자세한 내용은테이블 인덱스 구성 참조하십시오. B-트리에 대한 페이지 컬렉션은 sys.system_internals_allocation_units 시스템 뷰의root_page 포인터로 고정됩니다.

중요:

sys.system_internals_allocation_units 시스템 뷰는 Microsoft SQL Server 내부 전용으로 예약되었습니다. 향후 호환성은 보장되지 않습니다.

다음 그림에서는 단일 파티션의 비클러스터형 인덱스 구조를 보여 줍니다.

   

 포괄 인덱스

키가 아닌 열이라는 포괄 열을 추가하여 비클러스터형 인덱스의 기능을 인덱스의 리프 수준으로 확장할 있습니다. 열은 모든 수준의 비클러스터형 인덱스에 저장되는 반면 키가 아닌 열은 리프 수준에만 저장됩니다. 자세한 내용은 포괄 열이 있는 인덱스 참조하십시오.

   

원본 위치 <http://msdn.microsoft.com/ko-kr/library/ms177484.aspx>

   

댓글 없음:

댓글 쓰기