테이블과 인덱스는 8KB 페이지의 컬렉션으로 저장됩니다. 이 항목에서는 테이블 페이지 및 인덱스 페이지가 구성되는 방법을 설명합니다.
테이블 구성
다음 그림에서는 테이블의 구성을 보여 줍니다. 테이블은 하나 이상의 파티션에 포함되어 있으며 각 파티션에는 데이터 행이 힙 또는 클러스터형 인덱스 구조로 포함되어 있습니다. 힙 또는 클러스터형 인덱스 페이지는 데이터 행의 열 유형에 따라 하나 이상의 할당 단위로 관리됩니다.
파티션
테이블 및 인덱스 페이지는 하나 이상의 파티션에 포함되어 있습니다. 파티션은 사용자 정의된 데이터 구성 단위입니다. 기본적으로 테이블이나 인덱스는 모든 테이블 또는 인덱스 페이지가 포함된 하나의 파티션을 갖습니다. 파티션은 단일 파일 그룹에 포함되어 있습니다. 단일 파티션으로 구성된 테이블이나 인덱스는 이전 버전의 SQL Server에서 테이블 및 인덱스가 구성되는 구조와 동일합니다.
테이블 또는 인덱스에 파티션이 여러 개 사용되면 지정된 열을 기준으로 행 그룹이 개별 파티션에 매핑되도록 데이터가 행 분할됩니다. 이러한 파티션은 데이터베이스에 있는 하나 이상의 파일 그룹에 포함될 수 있습니다. 데이터에서 쿼리나 업데이트가 수행되면 테이블이나 인덱스는 단일 논리적 엔터티로 처리됩니다. 자세한 내용은 분할된 테이블 및 인덱스를 참조하십시오.
테이블 또는 인덱스에 사용되는 파티션을 보려면 sys.partitions(Transact-SQL) 카탈로그 뷰를 사용합니다.
SQL Server 테이블은 다음 두 가지 방법 중 하나를 사용하여 파티션 내에 있는 데이터 페이지를 구성합니다.
- 클러스터형
테이블은
클러스터형
인덱스를
갖고
있는
테이블입니다.
데이터 행은 클러스터형 인덱스 키에 기반한 순서대로 저장됩니다. 클러스터형 인덱스는 클러스터형 인덱스 키 값에 기반하여 행의 빠른 검색을 지원하는 B-트리 인덱스 구조로 구현됩니다. 리프 수준의 데이터 페이지를 포함하여 각 인덱스 수준에 있는 페이지는 이중 연결 목록으로 연결됩니다. 그러나 한 수준에서 다른 수준으로 이동하는 경우에는 키 값을 사용합니다. 자세한 내용은 클러스터형 인덱스 구조를 참조하십시오. - 힙은
클러스터형
인덱스가
없는
테이블입니다.
데이터 행은 특정한 순서로 저장되지 않으며 데이터 페이지 시퀀스에 대한 특별한 순서는 없습니다. 데이터 페이지는 연결 목록으로 연결되지 않습니다. 자세한 내용은 힙 구조를 참조하십시오.
인덱싱된 뷰는 클러스터형 테이블과 동일한 저장소 구조를 갖습니다.
비클러스터형 인덱스는 클러스터형 인덱스의 구조와 유사한 B-트리 인덱스 구조를 갖습니다. 차이점은 비클러스터형 인덱스가 데이터 행의 순서에 영향을 주지 않는다는 것입니다. 리프 수준에는 인덱스 행이 포함되어 있습니다. 각 인덱스 행에는 비클러스터형 키 값, 행 로케이터 및 포괄 열이나 키가 아닌 열이 포함됩니다. 로케이터는 키 값이 있는 데이터 행을 가리킵니다. 자세한 내용은 비클러스터형 인덱스 구조를 참조하십시오.
테이블의 각 xml 열에는 기본 XML 인덱스 하나와 보조 XML 인덱스 여러 개를 만들 수 있습니다. XML 인덱스는 xml 데이터 형식 열의 XML BLOB(Binary Large Object)를 영구적인 단편 형태로 표현한 것입니다. XML 인덱스는 내부 테이블로 저장됩니다. XML 인덱스 정보를 보려면sys.xml_indexes 또는 sys.internal_tables 카탈로그 뷰를 사용합니다.
XML 인덱스에 대한 자세한 내용은 XML 데이터 형식 열의 인덱스를 참조하십시오.
할당 단위 유형 | 다음을 관리하는 데 사용 |
IN_ROW_DATA | LOB(Large Object) 데이터를 제외한 모든 데이터가 포함되어 있는 데이터 또는 인덱스 행 페이지는 데이터 또는 인덱스 유형입니다. |
LOB_DATA | 하나 이상의 다음 데이터 형식으로 저장된 큰 개체 데이터: text, ntext, image, xml,varchar(max), nvarchar(max), varbinary(max) 또는 CLR UDT(CLR 사용자 정의 유형) 페이지는 텍스트 또는 이미지 유형입니다. |
ROW_OVERFLOW_DATA | 8,060바이트 행 크기 제한을 초과하는 varchar, nvarchar, varbinary 또는 sql_variant 열에 저장된 가변 길이 데이터 페이지는 텍스트 또는 이미지 유형입니다. |
페이지 유형에 대한 자세한 내용은 페이지 및 익스텐트 이해를 참조하십시오.
힙 또는 B-트리는 특정 파티션에서 각 유형별로 하나의 할당 단위만 가질 수 있습니다. 테이블 또는 인덱스 할당 단위 정보를 보려면sys.allocation_units 카탈로그 뷰를 사용합니다.
중요: |
sys.system_internals_allocation_units 시스템 뷰는 Microsoft SQL Server 내부 전용으로 예약되었습니다. 향후 호환성은 보장되지 않습니다. |
sys.partitions는 테이블 또는 인덱스의 각 파티션에 대해 행을 반환합니다.
- 힙은 sys.partitions에서 index_id = 0인
행을
갖습니다.
sys.system_internals_allocation_units의 first_iam_page 열은 지정된 파티션에 있는 힙 데이터 페이지 컬렉션에 대한 IAM 체인을 가리킵니다. 데이터 페이지 컬렉션에 있는 페이지가 연결되어 있지 않으므로 서버는 IAM 페이지를 사용하여 페이지를 찾습니다. - 테이블
또는
뷰의
클러스터형
인덱스는 sys.partitions에서 index_id = 1인
행을
갖습니다.
sys.system_internals_allocation_units의 root_page 열은 지정된 파티션에 있는 클러스터형 인덱스 B-트리의 맨 위를 가리킵니다. 서버는 인덱스 B-트리를 사용하여 파티션에서 데이터 페이지를 찾습니다. - 테이블
또는
뷰에
대해
생성된
각
비클러스터형
인덱스는 sys.partitions에서 index_id > 1인
행을
갖습니다.
sys.system_internals_allocation_units의 root_page 열은 지정된 파티션에 있는 비클러스터형 인덱스 B-트리의 맨 위를 가리킵니다. - LOB 열이
하나
이상
있는
각
테이블도 sys.partitions에서 index_id > 250인
행을
갖습니다.
first_iam_page 열은 LOB_DATA 할당 단위로 페이지를 관리하는 IAM 페이지의 체인을 가리킵니다.
원본 위치 <http://msdn.microsoft.com/ko-kr/library/ms189051.aspx>
댓글 없음:
댓글 쓰기