대량 가져오기의 최소 로깅을 위한 선행 조건
대량 가져오기 작업은 대량 로그 복구 모델 또는 단순 복구 모델에서만 최소로 기록될 수 있습니다. 전체 복구 모델을 사용하는 데이터베이스의 경우 대량 가져오기로 수행되는 모든 행 삽입 작업이 트랜잭션 로그에 기록됩니다. 전체 복구 모델을 사용할 경우 많은 양의 데이터를 가져오면 트랜잭션 로그가 빨리 채워질 수 있습니다. 이와 달리 최소 로깅을 사용하면 대량 가져오기 작업에 의해 로그 공간이 채워질 가능성이 줄어듭니다. 또한 최소 로깅은 전체 로깅보다 효율적입니다. 최소 로깅을 하려면 데이터베이스는 대량 로그 복구 모델(데이터베이스가 일반적으로 전체 복구를 사용하는 경우) 또는 단순 복구 모델을 사용해야 합니다.
[!참고] 전체 복구 모델과 대량 로그 복구 모델 사이의 전환 방법은 전체 또는 대량 로그 복구 모델에서 전환 고려 사항을 참조하십시오.
최소 로깅을 위한 테이블 요구 사항
최소 로깅에서 대상 테이블은 다음 조건을 모두 충족해야 합니다.
- 테이블이 복제되고 있지 않아야 합니다.
- 테이블 잠금이 지정되어야 합니다(TABLOCK 사용).
자세한 내용은 대량 가져오기를 위한 잠금 동작 제어를 참조하십시오.
[!참고] 대량 가져오기 작업을 최소 로깅으로 수행하는 동안 데이터 삽입은 트랜잭션 로그에 기록되지 않지만 새 익스텐트를 테이블에 할당할 때마다 데이터베이스 엔진에서 익스텐트 할당을 기록합니다.
테이블의 인덱스
테이블에 대한 최소 로깅의 발생 여부는 다음과 같이 테이블의 인덱싱 여부에 따라 달라지고, 테이블이 인덱싱되는 경우 테이블이 비어 있는지 여부에 따라 달라집니다.
테이블에 인덱스가 없는 경우 데이터 페이지가 최소 로깅됩니다.
테이블에 클러스터형 인덱스는 없지만 하나 이상의 비클러스터형 인덱스가 있는 경우 데이터 페이지는 항상 최소 로깅됩니다. 그러나 인덱스 페이지 로깅 방법은 다음과 같이 테이블이 비어 있는지 여부에 따라 달라집니다.
- 테이블이 비어 있는 경우 인덱스 페이지가 최소 로깅됩니다.
- 테이블이 비어 있지 않은 경우 인덱스 페이지가 모두 로깅됩니다.
[!참고] 빈 테이블로 시작하여 데이터 대량 가져오기를 다중 일괄 처리로 수행하는 경우 첫 번째 일괄 처리에서는 인덱스 및 데이터 페이지가 최소 로깅되지만 두 번째 일괄 처리부터는 데이터 페이지만 최소 로깅됩니다.
테이블에 클러스터형 인덱스가 있고 비어 있는 경우 데이터 및 인덱스 페이지가 모두 최소 로깅됩니다.
이와 달리 테이블에 클러스터형 인덱스가 있고 비어 있지 않은 경우 데이터 페이지와 인덱스 페이지는 복구 모델에 관계없이 모두 로깅됩니다.[!참고] 빈 테이블로 시작하여 데이터 대량 가져오기를 다중 일괄 처리로 수행하는 경우 첫 번째 일괄 처리에서는 인덱스 및 데이터 페이지가 최소 로깅되지만 두 번째 일괄 처리부터는 데이터 페이지만 대량으로 로깅됩니다.
대량 가져오기 작업 중의 잠금 및 로깅 동작에 대한 요약 표를 포함한 자세한 내용은 대량 가져오기 성능 최적화를 참조하십시오.
최상의 방법 대량 로그 복구를 사용하여 많은 테이블 행 집합을 가져오는 경우 대량 가져오기를 다중 일괄 처리로 분산하는 방법을 고려해 보십시오. 각 일괄 처리는 하나의 트랜잭션으로 처리되므로 일괄 처리가 완료되면 해당 로그를 백업할 수 있게 됩니다. 다음 로그 백업은 해당 행 일괄 처리를 대량으로 가져오는 데 사용된 로그 공간을 회수하여 다시 사용할 수 있습니다.
참고 항목
개념
관련 자료
bcp 유틸리티
BULK INSERT(Transact-SQL)
OPENROWSET(Transact-SQL)
BACKUP(Transact-SQL)
ALTER DATABASE(Transact-SQL)
SuspendIndexing Property
UseBulkCopyOption Property