인덱스 디스크 공간 예Index Disk Space Example

인덱스를 생성하거나, 다시 작성하거나, 삭제할 때마다 해당 파일 및 파일 그룹에서 이전(원본) 및 새(대상) 구조 모두에 대한 디스크 공간이 필요합니다.Whenever an index is created, rebuilt, or dropped, disk space for both the old (source) and new (target) structures is required in their appropriate files and filegroups. 기존 구조는 인덱스 생성 트랜잭션이 커밋된 후 할당 취소됩니다.The old structure is not deallocated until the index creation transaction commits. 또한 분류 작업을 위한 임시 디스크 공간도 추가로 필요할 수 있습니다.Additional temporary disk space for sorting operations may also be needed. 자세한 내용은 Disk Space Requirements for Index DDL Operations을 참조하세요.For more information, see Disk Space Requirements for Index DDL Operations.

다음 예에서는 클러스터형 인덱스를 만들기 위한 디스크 공간 요구 사항을 확인합니다.In this example, disk space requirements to create a clustered index are determined.

클러스터형 인덱스를 만들기 전에 다음과 같은 조건이 참인 것으로 가정합니다.Assume the following conditions are true before creating the clustered index:

  • 기존 테이블(힙)에 행이 백만 개 있습니다.The existing table (heap) contains 1 million rows. 각 행의 길이는 200바이트입니다.Each row is 200 bytes long.

  • 비클러스터형 인덱스 A에 행이 백만 개 있습니다.Nonclustered index A contains 1 million rows. 각 행의 길이는 50바이트입니다.Each row is 50 bytes long.

  • 비클러스터형 인덱스 B에 행이 백만 개 있습니다.Nonclustered index B contains 1 million rows. 각 행의 길이는 80바이트입니다.Each row is 80 bytes long.

  • index create memory 옵션이 2MB로 설정되어 있습니다.The index create memory option is set to 2 MB.

  • 모든 기존 및 새 인덱스의 채우기 비율 값은 80입니다.A fill factor value of 80 is used for all existing and new indexes. 즉, 페이지의 80%가 채워집니다.This means the pages are 80 percent full.

    참고

    클러스터형 인덱스를 만들 경우 행 표시기를 새 클러스터형 인덱스 키로 대체하기 위해 두 개의 비클러스터형 인덱스를 다시 작성해야 합니다.As a result of creating a clustered index, the two nonclustered indexes must be rebuilt to replace the row indicator with the new clustered index key.

오프라인 인덱스 작업의 디스크 공간 계산Disk Space Calculations for an Offline Index Operation

아래의 단계에서는 인덱스 작업 동안 사용할 임시 디스크 공간과 새 인덱스를 저장하기 위한 영구 디스크 공간을 모두 계산합니다.In the following steps, both temporary disk space to be used during the index operation and permanent disk space to store the new indexes are calculated. 결과를 반올림하고 인덱스 리프 수준의 크기만 고려하는 등 대략적으로 계산합니다.The calculations shown are approximate; results are rounded up and consider only the size of index leaf level. 대략적으로 계산한 경우에는 이를 나타내기 위해 물결표(~)를 사용합니다.The tilde (~) is used to indicate approximate calculations.

  1. 원본 구조의 크기를 확인합니다.Determine the size of the source structures.

    힙: 1백만 * 200바이트 = 200MBHeap: 1 million * 200 bytes ~ 200 MB

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

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

    기존 구조의 전체 크기: 363MBTotal size of existing structures: 363 MB

  2. 대상 인덱스 구조의 크기를 확인합니다.Determine the size of the target index structures. 새 클러스터형 키 길이가 uniqueifier를 포함하여 24바이트인 것으로 가정합니다.Assume that the new clustered key is 24 bytes long including a uniqueifier. 비클러스터형 인덱스 모두의 행 표시기(8바이트 길이)가 이 클러스터형 키로 대체됩니다.The row indicator (8 bytes long) in both nonclustered indexes will be replaced by this clustered key.

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

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

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

    새 구조의 전체 크기: 453MBTotal size of new structures: 453 MB

    인덱스 작업 동안 원본 구조와 대상 구조를 모두 지원하는 데 필요한 전체 디스크 공간은 816MB(363+453)입니다.Total disk space required to support both the source and target structures for the duration of the index operation is 816 MB (363 + 453). 인덱스 작업이 커밋되면 원본 구조에 현재 할당된 공간은 할당 취소됩니다.The space currently allocated to the source structures will be deallocated after the index operation is committed.

  3. 정렬을 위한 추가 임시 디스크 공간을 확인합니다.Determine additional temporary disk space for sorting.

    SORT_IN_TEMPDB를 ON으로 설정하여 tempdb 에서 정렬하고 SORT_IN_TEMPDB를 OFF로 설정하여 대상 위치에서 정렬하기 위한 공간 요구 사항이 나와 있습니다.Space requirements are shown for sorting in tempdb (with SORT_IN_TEMPDB set to ON) and sorting in the target location (with SORT_IN_TEMPDB set to OFF).

    1. SORT_IN_TEMPDB을 ON으로 설정한 경우 tempdb 에 가장 큰 인덱스(1백만200바이트~200MB)를 보관할 만큼 충분한 디스크 공간이 있어야 합니다.When SORT_IN_TEMPDB is set to ON, **tempdb* must have sufficient disk space to hold the largest index (1 million * 200 bytes ~ 200 MB). 정렬 작업에서는 채우기 비율을 고려하지 않습니다.Fill factor is not considered in the sorting operation.

      tempdb 위치의 추가 디스크 공간은 index create memory 서버 구성 옵션 구성 값 = 2MB와 같습니다.Additional disk space (in the tempdb location) equal to the Configure the index create memory Server Configuration Option value = 2 MB.

      SORT_IN_TEMPDB를 ON으로 설정한 경우의 전체 임시 디스크 공간 크기~202MB.Total size of temporary disk space with SORT_IN_TEMPDB set to ON ~ 202 MB.

    2. SORT_IN_TEMPDB를 OFF(기본값)로 설정한 경우 2단계에서 이미 새 인덱스용으로 간주한 250MB의 디스크 공간을 정렬에 사용합니다.When SORT_IN_TEMPDB is set to OFF (default), the 250 MB of disk space already considered for the new index in step 2 is used for sorting.

      대상 위치의 추가 디스크 공간은 index create memory 서버 구성 옵션 구성 값 = 2MB와 같습니다.Additional disk space (in the target location) equal to the Configure the index create memory Server Configuration Option value = 2 MB.

      SORT_IN_TEMPDB를 OFF로 설정한 경우의 전체 임시 디스크 공간 크기~2MB.Total size of temporary disk space with SORT_IN_TEMPDB set to OFF = 2 MB.

    tempdb를 사용하는 경우 클러스터형 및 비클러스터형 인덱스를 만드는 데 총 1018MB(816+202)가 필요합니다.Using tempdb, a total of 1018 MB (816 + 202) would be needed to create the clustered and nonclustered indexes. tempdb 를 사용하면 인덱스를 만드는 데 사용되는 임시 디스크 공간이 늘어나지만 tempdb 가 사용자 데이터베이스와 다른 디스크 집합에 있을 때 인덱스를 만드는 데 필요한 시간이 줄어들 수 있습니다.Although using tempdb increases the amount of temporary disk space used to create an index, it may reduce the time that is required to create an index when tempdb is on a different set of disks than the user database. tempdb사용에 대한 자세한 내용은 인덱스에 대한 SORT_IN_TEMPDB 옵션을 참조하세요.For more information about using tempdb, see SORT_IN_TEMPDB Option For Indexes.

    tempdb를 사용하지 않는 경우 클러스터형 및 비클러스터형 인덱스를 만드는 데 총 818MB(816+2)가 필요합니다.Without using tempdb, a total of 818 MB (816+ 2) would be needed to create the clustered and nonclustered indexes.

온라인 클러스터형 인덱스 작업의 디스크 공간 계산Disk Space Calculations for an Online Clustered Index Operation

온라인으로 클러스터형 인덱스를 만들거나, 삭제하거나 또는 다시 작성할 때는 임시 매핑 인덱스를 작성하고 관리하는 데 추가로 디스크 공간이 필요합니다.When you create, drop, or rebuild a clustered index online, additional disk space is required to build and maintain a temporary mapping index. 이 임시 매핑 인덱스는 테이블의 각 행에 대해 하나의 레코드를 포함하고 있으며 해당 내용은 이전 및 새 책갈피 열의 합집합입니다.This temporary mapping index contains one record for each row in the table, and its contents are the union of the old and new bookmark columns.

온라인 클러스터형 인덱스 작업에 필요한 디스크 공간을 계산하려면 오프라인 인덱스 작업에 대한 단계를 따르고 그 결과를 아래에 나와 있는 단계의 결과에 추가하십시오.To calculate the disk space needed for an online clustered index operation, follow the steps shown for an offline index operation and add those results to the results of the following step.

  • 임시 매핑 인덱스에 대한 공간을 확인합니다.Determine space for the temporary mapping index.

    이 예에서 이전 책갈피는 힙(8바이트)의 RID(행 ID)이고 새 책갈피는 클러스터링 키( uniqueifier를 포함하여 24바이트)입니다.In this example, the old bookmark is the row ID (RID) of the heap (8 bytes) and the new bookmark is the clustering key (24 bytes including a uniqueifier). 이전 책갈피와 새 책갈피 사이에 겹치는 열은 없습니다.There are no overlapping columns between the old and new bookmarks.

    임시 매핑 인덱스 크기 = 1백만*(8바이트+24바이트)/80%~40MBTemporary mapping index size = 1 million * (8 bytes + 24 bytes) / 80% ~ 40 MB.

    SORT_IN_TEMPDB를 OFF로 설정한 경우에는 대상 위치에서 필요한 디스크 공간에, SORT_IN_TEMPDB를 ON으로 설정한 경우에는 tempdb 에 이 디스크 공간을 추가해야 합니다.This disk space must be added to the required disk space in the target location if SORT_IN_TEMPDB is set to OFF, or to tempdb if SORT_IN_TEMPDB is set to ON.

    자세한 내용은 인덱스 DDL 작업의 디스크 공간 요구 사항을 참조하세요.For more information about the temporary mapping index, see Disk Space Requirements for Index DDL Operations.

디스크 공간 요약Disk Space Summary

다음 표는 디스크 공간 계산 결과를 요약한 것입니다.The following table summarizes the results of the disk space calculations.

인덱스 작업Index operation 다음 구조의 위치에 대한 디스크 공간 요구 사항Disk space requirements for the locations of the following structures
SORT_IN_TEMPDB = ON인 경우 오프라인 인덱스 작업Offline index operation with SORT_IN_TEMPDB = ON 작업 중 전체 공간: 1018MBTotal space during the operation: 1018 MB

-기존 테이블 및 인덱스: 363MB*-Existing table and indexes: 363 MB*

-
tempdb: 202MBtempdb: 202 MB

-새 인덱스: 453MB-New indexes: 453 MB

작업 후 필요한 전체 공간: 453MBTotal space required after the operation: 453 MB
SORT_IN_TEMPDB = OFF인 경우 오프라인 인덱스 작업Offline index operation with SORT_IN_TEMPDB = OFF 작업 중 전체 공간: 816MBTotal space during the operation: 816 MB

-기존 테이블 및 인덱스: 363MB-Existing table and indexes: 363 MB

-새 인덱스: 453MB-New indexes: 453 MB

작업 후 필요한 전체 공간: 453MBTotal space required after the operation: 453 MB
SORT_IN_TEMPDB = ON인 경우 온라인 인덱스 작업Online index operation with SORT_IN_TEMPDB = ON 작업 중 전체 공간: 1058MBTotal space during the operation: 1058 MB

-기존 테이블 및 인덱스: 363MB*-Existing table and indexes: 363 MB*

-
tempdb (매핑 인덱스 포함): 242MBtempdb* (includes mapping index): 242 MB*

-새 인덱스: 453MB-New indexes: 453 MB

작업 후 필요한 전체 공간: 453MBTotal space required after the operation: 453 MB
SORT_IN_TEMPDB = OFF인 경우 온라인 인덱스 작업Online index operation with SORT_IN_TEMPDB = OFF 작업 중 전체 공간: 856MBTotal space during the operation: 856 MB

-기존 테이블 및 인덱스: 363MB-Existing table and indexes: 363 MB

-임시 매핑 인덱스: 40MB*-Temporary mapping index: 40 MB*

-새 인덱스: 453MB-New indexes: 453 MB

작업 후 필요한 전체 공간: 453MBTotal space required after the operation: 453 MB

이 공간은 인덱스 작업이 커밋된 후 할당 취소됩니다.This space is deallocated after the index operation is committed.

이 예에서는 동시 사용자 업데이트 및 삭제 작업으로 인해 만들어진 버전 레코드용으로 tempdb 에서 추가로 필요한 임시 디스크 공간을 고려하지 않았습니다.This example does not consider any additional temporary disk space required in tempdb for version records created by concurrent user update and delete operations.

Disk Space Requirements for Index DDL OperationsDisk Space Requirements for Index DDL Operations

인덱스 작업에 필요한 트랜잭션 로그 디스크 공간Transaction Log Disk Space for Index Operations