적용 대상:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Microsoft Fabric의 SQL 데이터베이스
대량 인덱스 작업은 트랜잭션 로그를 빠르게 채울 수 있는 대량의 데이터 로드를 생성할 수 있습니다. 인덱스 작업을 롤백할 수 있도록 하려면 인덱스 작업이 완료될 때까지 트랜잭션 로그를 잘라낼 수 없습니다. 그러나 인덱스 작업 중에 로그를 백업할 수 있습니다. 따라서 트랜잭션 로그에는 인덱스 작업을 수행하는 동안 인덱스 작업 트랜잭션 및 동시 사용자 트랜잭션을 모두 저장할 수 있는 충분한 공간이 있어야 합니다.
이는 오프라인 및 온라인 인덱스 작업 모두에 해당합니다. 오프라인 인덱스 작업 중에는 기본 테이블에 액세스할 수 없으므로 사용자 트랜잭션이 거의 없을 수 있으며 로그가 빠르게 증가하지 않을 수 있습니다. 온라인 인덱스 작업은 동시 사용자 활동을 방지하지 않으므로 대규모 온라인 인덱스 작업을 상당한 동시 사용자 트랜잭션과 결합하면 로그를 자르는 옵션 없이 트랜잭션 로그가 지속적으로 증가합니다.
권장 사항
대규모 인덱스 작업을 실행하는 경우 다음 권장 사항을 고려합니다.
대규모 인덱스 작업을 온라인으로 실행하기 전에 트랜잭션 로그가 백업되고 잘렸는지, 그리고 로그에 프로젝션된 인덱스 및 사용자 트랜잭션을 저장할 충분한 공간이 있는지 확인합니다.
인덱스 작업을 위해
SORT_IN_TEMPDB옵션을ON로 설정하는 것을 고려하십시오. 그러면 인덱스 트랜잭션과 동시 사용자 트랜잭션이 구분됩니다. 인덱스 트랜잭션은 트랜잭션 로그에tempdb저장되고 동시 사용자 트랜잭션은 사용자 데이터베이스의 트랜잭션 로그에 저장됩니다. 이렇게 하면 필요한 경우 인덱스 작업 중에 사용자 데이터베이스의 트랜잭션 로그가 잘립니다. 또한 로그가tempdb사용자 데이터베이스 로그와 동일한 디스크에 없는 경우 두 로그는 동일한 디스크 공간에 대해 경쟁하지 않습니다.참고 항목
데이터베이스 및 트랜잭션 로그에
tempdb인덱스 작업을 처리할 수 있는 충분한 디스크 공간이 있는지 확인합니다.tempdb인덱스 작업이 완료될 때까지 트랜잭션 로그를 잘라낼 수 없습니다.인덱스 작업의 최소 로깅을 허용하는 데이터베이스 복구 모델을 사용합니다. 이렇게 하면 로그 크기가 줄어들고 로그가 로그 공간을 채우지 못할 수 있습니다.
명시적 트랜잭션에서 온라인 인덱스 작업을 실행하지 마세요. 명시적 트랜잭션이 끝날 때까지 로그가 잘리지 않습니다.