인덱스 디스크 공간 예
적용 대상: SQL Server Azure SQL 데이터베이스 Azure SQL Managed Instance
인덱스를 생성하거나, 다시 작성하거나, 삭제할 때마다 해당 파일 및 파일 그룹에서 이전(원본) 및 새(대상) 구조 모두에 대한 디스크 공간이 필요합니다. 기존 구조는 인덱스 생성 트랜잭션이 커밋된 후 할당 취소됩니다. 정렬 작업을 위한 추가 임시 디스크 공간도 필요할 수 있습니다. 자세한 내용은 인덱스 DDL 작업에 필요한 디스크 공간 요구 사항을 참조하세요.
다음 예에서는 클러스터형 인덱스를 만들기 위한 디스크 공간 요구 사항을 확인합니다.
클러스터형 인덱스를 만들기 전에 다음 조건이 참이라고 가정합니다.
기존 테이블(힙)에는 행이 백만 개 있습니다. 각 행의 길이는 200바이트입니다.
비클러스터형 인덱스 A에 행이 백만 개 있습니다. 각 행의 길이는 50바이트입니다.
비클러스터형 인덱스 B에 행이 백만 개 있습니다. 각 행의 길이는 80바이트입니다.
index create memory 옵션이 2MB로 설정되어 있습니다.
모든 기존 및 새 인덱스의 채우기 비율 값은 80입니다. 즉, 페이지가 80% 가득 찼습니다.
참고 항목
클러스터형 인덱스를 만들 경우 행 표시기를 새 클러스터형 인덱스 키로 대체하기 위해 두 개의 비클러스터형 인덱스를 다시 작성해야 합니다.
오프라인 인덱스 작업의 디스크 공간 계산
다음 단계에서는 인덱스 작업 중에 사용할 임시 디스크 공간과 새 인덱스를 저장할 영구 디스크 공간이 모두 계산됩니다. 표시된 계산은 근사값입니다. 결과는 반올림되고 인덱스 리프 수준의 크기만 고려합니다. 물결표(~)는 대략적인 계산을 나타내는 데 사용됩니다.
원본 구조의 크기를 결정합니다.
힙: 1백만*200바이트~200MB
비클러스터형 인덱스 A: 1백만*50바이트/80%~63MB
비클러스터형 인덱스 B: 1백만*80바이트/80%~100MB
기존 구조의 전체 크기: 363MB
대상 인덱스 구조의 크기를 결정합니다. 새 클러스터형 키의 길이가 고유 식별자를 포함하여 24바이트라고 가정합니다. 두 비클러스터형 인덱스의 행 표시기(8바이트 길이)는 이 클러스터형 키로 바뀝니다.
클러스터형 인덱스: 1백만*200바이트/80%~250MB
비클러스터형 인덱스 A: 1백만*(50 - 8 + 24)바이트/80%~83MB
비클러스터형 인덱스 B: 1백만*(80 – 8 + 24)바이트/80%~120MB
새 구조의 전체 크기: 453MB
인덱스 작업 기간 동안 원본 및 대상 구조를 모두 지원하는 데 필요한 총 디스크 공간은 816MB(363 + 453)입니다. 인덱스 작업이 커밋되면 원본 구조에 현재 할당된 공간은 할당 취소됩니다.
정렬을 위한 추가 임시 디스크 공간을 결정합니다.
tempdb에서 정렬(SORT_IN_TEMPDB가 ON으로 설정)하고 대상 위치에서 정렬(SORT_IN_TEMPDB가 OFF로 설정)하기 위한 공간 요구 사항이 표시됩니다.
SORT_IN_TEMPDB가 ON으로 설정되면 tempdb는 가장 큰 인덱스(1백만*200바이트~200MB)를 보유하기에 충분한 디스크 공간이 있어야 합니다. 채우기 비율은 정렬 작업에서 고려되지 않습니다.
추가 디스크 공간(tempdb 위치에서)은 인덱스 만들기 메모리 서버 구성 옵션 구성 값인 2MB와 같습니다.
SORT_IN_TEMPDB를 ON으로 설정한 경우의 전체 임시 디스크 공간 크기~202MB.
SORT_IN_TEMPDB가 OFF(기본값)로 설정되면 2단계의 새 인덱스로 이미 고려된 250MB의 디스크 공간이 정렬에 사용됩니다.
대상 위치의 추가 디스크 공간은 index create memory 서버 구성 옵션 구성 값 = 2MB와 같습니다.
SORT_IN_TEMPDB를 OFF로 설정한 경우의 전체 임시 디스크 공간 크기는 2MB입니다.
tempdb를 사용하는 경우 클러스터형 및 비클러스터형 인덱스를 만드는 데 총 1018MB(816+202)가 필요합니다. tempdb를 사용하면 인덱스를 만드는 데 사용되는 임시 디스크 공간이 늘어나지만 tempdb가 사용자 데이터베이스가 아닌 다른 디스크 집합에 있을 때 인덱스를 만드는 데 필요한 시간은 줄어들 수 있습니다. tempdb 사용에 대한 자세한 내용은 인덱스에 대한 SORT_IN_TEMPDB 옵션을 참조하세요.
tempdb를 사용하지 않는 경우 클러스터형 및 비클러스터형 인덱스를 만드는 데 총 818MB(816+2)가 필요합니다.
온라인 클러스터형 인덱스 작업에 필요한 디스크 공간 계산
클러스터형 인덱스를 온라인으로 만들거나 삭제하거나 다시 빌드하는 경우 임시 매핑 인덱스의 빌드 및 유지 관리에 추가 디스크 공간이 필요합니다. 이 임시 매핑 인덱스는 테이블의 각 행에 대해 하나의 레코드를 포함하며 해당 내용은 이전 책갈피 및 새 책갈피 열의 합집합입니다.
온라인 클러스터형 인덱스 작업에 필요한 디스크 공간을 계산하려면 오프라인 인덱스 작업에 대해 표시된 단계를 수행하고 다음 단계의 결과에 해당 결과를 추가합니다.
임시 매핑 인덱스에 필요한 공간을 결정합니다.
이 예제에서 이전 책갈피는 힙(8바이트)의 RID(행 ID)이며 새 책갈피는 클러스터링 키(고유 식별자 포함 24바이트)입니다. 이전 책갈피와 새 책갈피 사이에는 겹치는 열이 없습니다.
임시 매핑 인덱스 크기 = 1백만*(8바이트 + 24바이트)/80%~40MB.
SORT_IN_TEMPDB가 OFF로 설정된 경우 대상 위치의 필수 디스크 공간에 이 디스크 공간을 추가하거나 SORT_IN_TEMPDB가 ON으로 설정된 경우 tempdb에 추가해야 합니다.
임시 매핑 인덱스에 대한 자세한 내용은 인덱스 DDL 작업에 필요한 디스크 공간 요구 사항을 참조하세요.
디스크 공간 요약
다음 표는 디스크 공간 계산 결과를 요약한 것입니다.
인덱스 작업 | 다음 구조의 위치에 대한 디스크 공간 요구 사항 |
---|---|
SORT_IN_TEMPDB = ON인 경우 오프라인 인덱스 작업 | 작업 중 전체 공간: 1018MB -기존 테이블 및 인덱스: 363MB* - tempdb: 202MB* -새 인덱스: 453MB 작업 후 필요한 전체 공간: 453MB |
SORT_IN_TEMPDB = OFF인 경우 오프라인 인덱스 작업 | 작업 중 전체 공간: 816MB -기존 테이블 및 인덱스: 363MB* -새 인덱스: 453MB 작업 후 필요한 전체 공간: 453MB |
SORT_IN_TEMPDB = ON인 경우 온라인 인덱스 작업 | 작업 중 전체 공간: 1058MB -기존 테이블 및 인덱스: 363MB* - tempdb(매핑 인덱스 포함): 242MB* -새 인덱스: 453MB 작업 후 필요한 전체 공간: 453MB |
SORT_IN_TEMPDB = OFF인 경우 온라인 인덱스 작업 | 작업 중 전체 공간: 856MB -기존 테이블 및 인덱스: 363MB* -임시 매핑 인덱스: 40MB* -새 인덱스: 453MB 작업 후 필요한 전체 공간: 453MB |
*이 공간은 인덱스 작업이 커밋된 후 할당 취소됩니다.
이 예제에서는 동시 사용자 업데이트 및 삭제 작업으로 만든 버전 레코드의 tempdb에 필요한 추가 임시 디스크 공간을 고려하지 않습니다.