적용 대상:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Microsoft Fabric의 SQL 데이터베이스
인덱스를 생성하거나, 다시 작성하거나, 삭제할 때마다 해당 파일 및 파일 그룹에서 이전(원본) 및 새(대상) 구조 모두에 대한 디스크 공간이 필요합니다. 인덱스 만들기 트랜잭션이 커밋될 때까지 이전 구조체의 할당이 취소되지 않습니다. 정렬 작업을 위한 추가 임시 디스크 공간도 필요할 수 있습니다. 자세한 내용은 인덱스 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_TEMPDBON설정되면tempdb가장 큰 인덱스(1백만 * 200바이트 ~ 200MB)를 보유할 수 있는 충분한 디스크 공간이 있어야 합니다. 채우기 비율은 정렬 작업에서 고려되지 않습니다.추가 디스크 공간(
tempdb위치에 있음)은 인덱스 생성 메모리 값인 2MB와 같습니다.최대 202MB로
SORT_IN_TEMPDBON설정된 임시 디스크 공간의 총 크기입니다.기본값으로
SORT_IN_TEMPDB설정하면OFF2단계에서 새 인덱스로 이미 고려된 250MB의 디스크 공간이 정렬에 사용됩니다.인덱스 생성 메모리 값에 해당하는 추가 디스크 공간 2MB가 필요합니다 (대상 위치에).
= 2MB로
SORT_IN_TEMPDBOFF설정된 임시 디스크 공간의 총 크기입니다.
클러스터 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으로 설정된 경우 대상 위치의 필요한 디스크 공간에 추가해야 하며,tempdb가SORT_IN_TEMPDB로 설정된 경우에는ON에 추가해야 합니다.
임시 매핑 인덱스에 대한 자세한 내용은 인덱스 DDL 작업에 대한 디스크 공간 요구 사항을 참조하세요.
디스크 공간 요약
다음 표는 디스크 공간 계산 결과를 요약한 것입니다.
| 인덱스 작업 | 다음 구조의 위치에 대한 디스크 공간 요구 사항 |
|---|---|
SORT_IN_TEMPDB = ON를 사용한 오프라인 인덱스 작업 |
작업 중 총 공간: 1,018MB - 기존 테이블 및 인덱스: 363MB 1 - tempdb: 202MB 1- 새 인덱스: 453MB 작업 후 필요한 전체 공간: 453MB |
SORT_IN_TEMPDB = OFF를 사용한 오프라인 인덱스 작업 |
작업 중 전체 공간: 816MB - 기존 테이블 및 인덱스: 363MB 1 - 새 인덱스: 453MB 작업 후 필요한 전체 공간: 453MB |
SORT_IN_TEMPDB = ON을(를) 사용하여 온라인 인덱스 작업 |
작업 중 총 공간: 1,058MB - 기존 테이블 및 인덱스: 363MB 1 - tempdb (매핑 인덱스 포함): 242MB*- 새 인덱스: 453MB 작업 후 필요한 전체 공간: 453MB |
SORT_IN_TEMPDB = OFF을(를) 사용하여 온라인 인덱스 작업 |
작업 중 전체 공간: 856MB - 기존 테이블 및 인덱스: 363MB 1 - 임시 매핑 인덱스: 40MB 1 - 새 인덱스: 453MB 작업 후 필요한 전체 공간: 453MB |
1 인덱스 작업이 커밋된 후 이 공간의 할당이 취소됩니다.
이 예제에서는 동시 사용자 업데이트 및 삭제 작업으로 만든 버전 레코드에 tempdb 필요한 추가 임시 디스크 공간을 고려하지 않습니다.