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