인덱스 디스크 공간 예

적용 대상:SQL ServerAzure SQL DatabaseAzure SQL Managed Instance

인덱스를 생성하거나, 다시 작성하거나, 삭제할 때마다 해당 파일 및 파일 그룹에서 이전(원본) 및 새(대상) 구조 모두에 대한 디스크 공간이 필요합니다. 기존 구조는 인덱스 생성 트랜잭션이 커밋된 후 할당 취소됩니다. 정렬 작업을 위한 추가 임시 디스크 공간도 필요할 수 있습니다. 자세한 내용은 인덱스 DDL 작업에 대한 디스크 공간 요구 사항을 참조 하세요.

다음 예에서는 클러스터형 인덱스를 만들기 위한 디스크 공간 요구 사항을 확인합니다.

클러스터형 인덱스 만들기 전에 다음 조건이 참이라고 가정합니다.

  • 기존 테이블(힙)에는 1백만 개의 행이 포함되어 있습니다. 각 행의 길이는 200바이트입니다.

  • 비클러스터형 인덱스 A에 행이 백만 개 있습니다. 각 행의 길이는 50바이트입니다.

  • 비클러스터형 인덱스 B에는 1백만 개의 행이 포함됩니다. 각 행의 길이는 80바이트입니다.

  • index create memory 옵션이 2MB로 설정되어 있습니다.

  • 모든 기존 및 새 인덱스의 채우기 비율 값은 80입니다. 즉, 페이지가 80% 가득 찼습니다.

    참고 항목

    클러스터형 인덱스를 만들 경우 행 표시기를 새 클러스터형 인덱스 키로 대체하기 위해 두 개의 비클러스터형 인덱스를 다시 작성해야 합니다.

오프라인 인덱스 작업의 디스크 공간 계산

다음 단계에서는 인덱스 작업 중에 사용할 임시 디스크 공간과 새 인덱스를 저장하는 영구 디스크 공간이 모두 계산됩니다. 표시된 계산은 근사값입니다. 결과가 반올림되고 인덱스 리프 수준의 크기만 고려합니다. 타일드(~)는 대략적인 계산을 나타내는 데 사용됩니다.

  1. 원본 구조체의 크기를 결정합니다.

    힙: 1백만 * 200바이트 ~ 200MB

    비클러스터형 인덱스 A: 1백만 * 50바이트/80% ~ 63MB

    비클러스터형 인덱스 B: 1백만 * 80바이트/80% ~ 100MB

    기존 구조의 전체 크기: 363MB

  2. 대상 인덱스 구조의 크기를 결정합니다. 새 클러스터형 키가 uniqueifier를 포함하여 24바이트 길이라고 가정합니다. 비클러스터형 인덱스의 행 표시기(8바이트 길이)는 이 클러스터형 키로 바뀝니다.

    클러스터형 인덱스: 1백만 * 200바이트/80% ~ 250MB

    비클러스터형 인덱스 A: 1백만 * (50 - 8 + 24) 바이트/80% ~ 83MB

    비클러스터형 인덱스 B: 1백만 * (80 - 8 + 24) 바이트/80% ~ 120MB

    새 구조의 전체 크기: 453MB

    인덱스 작업 기간 동안 원본 및 대상 구조를 모두 지원하는 데 필요한 총 디스크 공간은 816MB(363 + 453)입니다. 인덱스 작업이 커밋되면 원본 구조에 현재 할당된 공간은 할당 취소됩니다.

  3. 정렬을 위한 추가 임시 디스크 공간을 결정합니다.

    tempdb에서 정렬(SORT_IN_TEMPDB ON으로 설정)하고 대상 위치에서 정렬하기 위한 공간 요구 사항이 표시됩니다(SORT_IN_TEMPDB OFF로 설정됨).

    1. SORT_IN_TEMPDB ON 으로 설정되면 tempdb 는 가장 큰 인덱스(1백만 * 200바이트 ~ 200MB)를 보유할 수 있는 충분한 디스크 공간이 있어야 합니다. 채우기 비율은 정렬 작업에서 고려되지 않습니다.

      추가 디스크 공간(tempdb 위치)은 인덱스 만들기 메모리 서버 구성 옵션 값 = 2MB 구성과 같습니다.

      SORT_IN_TEMPDB를 ON으로 설정한 경우의 전체 임시 디스크 공간 크기~202MB.

    2. 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)이며 새 책갈피는 클러스터링 키(uniqueifier를 포함한 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 에 필요한 추가 임시 디스크 공간을 고려하지 않습니다.

인덱스 DDL 작업에 대한 디스크 공간 요구 사항

인덱스 작업을 위한 트랜잭션 로그 디스크 공간