인덱스 DDL 작업의 디스크 공간 요구 사항Disk Space Requirements for Index DDL Operations

이 항목은 다음에 적용됩니다. 예SQL Server(2016부터 시작)아니요Azure SQL 데이터베이스아니요Azure SQL 데이터 웨어하우스아니요병렬 데이터 웨어하우스THIS TOPIC APPLIES TO: yesSQL Server (starting with 2016)noAzure SQL DatabasenoAzure SQL Data Warehouse noParallel Data Warehouse

디스크 공간은 인덱스를 생성, 다시 작성 또는 삭제할 때 고려해야 할 주요 사항입니다.Disk space is an important consideration when you create, rebuild, or drop indexes. 디스크 공간이 부족하면 성능이 저하되거나 인덱스 작업이 실패할 수도 있습니다.Inadequate disk space can degrade performance or even cause the index operation to fail. 이 항목에서는 인덱스 DDL(데이터 정의 언어) 작업에 필요한 디스크 공간을 결정하는 데 도움이 되는 일반 정보를 제공합니다.This topic provides general information that can help you determine the amount of disk space required for index data definition language (DDL) operations.

추가 디스크 공간이 필요 없는 인덱스 작업Index Operations That Require No Additional Disk Space

다음 인덱스 작업에는 추가 디스크 공간이 필요 없습니다.The following index operations require no additional disk space:

  • ALTER INDEX REORGANIZE. 로그 공간은 필요합니다.ALTER INDEX REORGANIZE; however, log space is required.

  • DROP INDEX. 비클러스터형 인덱스를 삭제할 때 추가 디스크 공간이 필요 없습니다.DROP INDEX when you are dropping a nonclustered index.

  • DROP INDEX. 비클러스터형 인덱스가 없는 경우 MOVE TO 절을 지정하지 않고 오프라인으로 클러스터형 인덱스를 삭제할 때 추가 디스크 공간이 필요 없습니다.DROP INDEX when you are dropping a clustered index offline without specifying the MOVE TO clause and nonclustered indexes do not exist.

  • CREATE TABLE(PRIMARY KEY 또는 UNIQUE 제약 조건)CREATE TABLE (PRIMARY KEY or UNIQUE constraints)

추가 디스크 공간이 필요한 인덱스 작업Index Operations That Require Additional Disk Space

이외의 DDL 작업에는 모두 작업 중 사용할 추가 임시 디스크 공간과 새 인덱스 구조를 저장할 영구 디스크 공간이 필요합니다.All other index DDL operations require additional temporary disk space to use during the operation, and permanent disk space to store the new index structure or structures.

새 인덱스 구조가 생성되면 해당 파일과 파일 그룹에 기존(원본) 구조와 새(대상) 구조를 위한 디스크 공간이 모두 필요합니다.When a new index structure is created, 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.

다음 인덱스 DDL 작업에서는 새 인덱스 구조가 생성되고 추가 디스크 공간이 필요합니다.The following index DDL operations create new index structures and require additional disk space:

  • CREATE INDEXCREATE INDEX

  • CREATE INDEX WITH DROP_EXISTINGCREATE INDEX WITH DROP_EXISTING

  • ALTER INDEX REBUILDALTER INDEX REBUILD

  • ALTER TABLE ADD CONSTRAINT(PRIMARY KEY 또는 UNIQUE)ALTER TABLE ADD CONSTRAINT (PRIMARY KEY or UNIQUE)

  • ALTER TABLE DROP CONSTRAINT(PRIMARY KEY 또는 UNIQUE)(제약 조건이 클러스터형 인덱스를 기반으로 하는 경우)ALTER TABLE DROP CONSTRAINT (PRIMARY KEY or UNIQUE) when the constraint is based on a clustered index

  • DROP INDEX MOVE TO(클러스터형 인덱스에만 적용됨)DROP INDEX MOVE TO (Applies only to clustered indexes.)

정렬을 위한 임시 디스크 공간Temporary Disk Space for Sorting

원본 및 대상 구조에 필요한 디스크 공간 이외에도 쿼리 최적화 프로그램에서 정렬이 필요 없는 실행 계획을 찾지 못할 경우 정렬을 위한 임시 디스크 공간이 필요합니다.Besides the disk space required for the source and target structures, temporary disk space is required for sorting, unless the query optimizer finds an execution plan that does not require sorting.

정렬이 필요할 경우 한 번에 한 인덱스만 정렬됩니다.If sorting is required, sorting occurs one new index at a time. 예를 들어 단일 문 내에서 클러스터형 인덱스와 관련 비클러스터형 인덱스를 다시 작성할 때 인덱스는 차례로 정렬됩니다.For example, when you rebuild a clustered index and associated nonclustered indexes within a single statement, the indexes are sorted one after the other. 따라서 정렬에 필요한 추가 임시 디스크 공간은 작업에서 가장 큰 인덱스만큼만 크면 됩니다.Therefore, the additional temporary disk space that is required for sorting only has to be as large as the largest index in the operation. 대개 클러스터형 인덱스가 가장 큽니다.This is almost always the clustered index.

SORT_IN_TEMPDB 옵션이 ON으로 설정된 경우 가장 큰 인덱스가 tempdb에 맞아야 합니다.If the SORT_IN_TEMPDB option is set to ON, the largest index must fit into tempdb. 이 옵션을 사용하면 인덱스를 만드는 데 사용되는 임시 디스크 공간이 늘어나지만 tempdb 가 사용자 데이터베이스와 다른 디스크 집합에 있을 때 인덱스를 만드는 데 필요한 시간은 줄어들 수 있습니다.Although this option increases the amount of temporary disk space that is used to create an index, it may reduce the time that is required to create an index when tempdb is on a set of disks different from the user database.

SORT_IN_TEMPDB이 기본값인 OFF로 설정된 경우 분할된 인덱스를 비롯한 각 인덱스가 해당 대상 디스크 공간에서 정렬됩니다. 이때 새 인덱스 구조를 위한 디스크 공간만 필요합니다.If SORT_IN_TEMPDB is set to OFF (the default) each index, including partitioned indexes, is sorted in its destination disk space; and only the disk space for the new index structures is required.

디스크 공간을 계산하는 예는 Index Disk Space Example를 참조하십시오.For an example of calculating disk space, see Index Disk Space Example.

온라인 인덱스 작업을 위한 임시 디스크 공간Temporary Disk Space for Online Index Operations

온라인으로 인덱스 작업을 수행하면 임시 디스크 공간이 추가로 필요합니다.When you perform index operations online, additional temporary disk space is required.

온라인으로 클러스터형 인덱스를 생성, 다시 작성 또는 삭제할 경우 기존 책갈피를 새 책갈피에 매핑하기 위해 임시 비클러스터형 인덱스가 생성됩니다.If a clustered index is created, rebuilt, or dropped online, a temporary nonclustered index is created to map old bookmarks to new bookmarks. SORT_IN_TEMPDB 옵션이 ON으로 설정된 경우 tempdb에 이 임시 인덱스가 생성됩니다.If the SORT_IN_TEMPDB option is set to ON, this temporary index is created in tempdb. SORT_IN_TEMPDB가 OFF로 설정된 경우 대상 인덱스와 같은 파일 그룹이나 파티션 구성표가 사용됩니다.If SORT_IN_TEMPDB is set to OFF, the same filegroup or partition scheme as the target index is used. 임시 매핑 인덱스에는 테이블의 각 행에 대한 레코드가 하나씩 들어 있고 해당 내용은 기존 책갈피 열과 새 책갈피 행을 합친 것입니다. 여기에는 두 책갈피에 모두 사용되는 열이 한 번만 포함되며 고유 식별자와 레코드 식별자가 포함됩니다.The temporary mapping index contains one record for each row in the table, and its contents is the union of the old and new bookmark columns, including uniqueifiers and record identifiers and including only a single copy of any column used in both bookmarks. 온라인 인덱스 작업에 대한 자세한 내용은 온라인으로 인덱스 작업 수행을 참조하세요.For more information about online index operations, see Perform Index Operations Online.

참고

DROP INDEX 문에는 SORT_IN_TEMPDB 옵션을 설정할 수 없습니다.The SORT_IN_TEMPDB option cannot be set for DROP INDEX statements. 임시 매핑 인덱스는 항상 대상 인덱스와 같은 파일 그룹이나 파티션 구성표에 생성됩니다.The temporary mapping index is always created in the same filegroup or partition scheme as the target index.

온라인 인덱스 작업은 행 버전 관리를 사용하여 다른 트랜잭션에서 수정하는 내용의 영향을 받지 않습니다.Online index operations use row versioning to isolate the index operation from the effects of modifications made by other transactions. 따라서 이미 읽은 행에 대한 공유 잠금을 요청할 필요가 없습니다.This avoids the need for requesting share locks on rows that have been read. 온라인 인덱스 작업 중 여러 사용자가 동시에 업데이트 및 삭제 작업을 수행하려면 tempdb의 버전 레코드를 위한 공간이 필요합니다.Concurrent user update and delete operations during online index operations require space for version records in tempdb. 자세한 내용은 온라인으로 인덱스 작업 수행 을 참조하세요.For more information, see Perform Index Operations Online .

Index Disk Space ExampleIndex Disk Space Example

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

테이블 크기 예측Estimate the Size of a Table

클러스터형 인덱스의 크기 예측Estimate the Size of a Clustered Index

비클러스터형 인덱스의 크기 예측Estimate the Size of a Nonclustered Index

힙 크기 예측Estimate the Size of a Heap

CREATE INDEX(Transact-SQL)CREATE INDEX (Transact-SQL)

ALTER INDEX(Transact-SQL)ALTER INDEX (Transact-SQL)

DROP INDEX(Transact-SQL)DROP INDEX (Transact-SQL)

인덱스의 채우기 비율 지정Specify Fill Factor for an Index

인덱스 다시 구성 및 다시 작성Reorganize and Rebuild Indexes