대량 가져오기의 최소 로깅을 위한 선행 조건

전체 복구 모델을 사용하는 데이터베이스의 경우 대량 가져오기로 수행되는 모든 행 삽입 작업이 트랜잭션 로그에 기록됩니다. 전체 복구 모델을 사용할 경우 많은 양의 데이터를 가져오면 트랜잭션 로그가 빨리 채워질 수 있습니다. 이와 달리 단순 복구 모델 또는 대량 로그 복구 모델에서 대량 가져오기 작업의 로깅을 최소화하면 대량 가져오기 작업에 의해 로그 공간이 채워질 가능성이 줄어듭니다. 또한 최소 로깅은 전체 로깅보다 효율적입니다.

[!참고]

대량 로그 복구 모델은 대규모의 대량 작업 중에 전체 복구 모델을 임시로 대체하기 위해 고안된 것입니다.

대량 가져오기 작업의 최소 로깅을 위한 테이블 요구 사항

최소 로깅에서 대상 테이블은 다음 조건을 충족해야 합니다.

  • 테이블이 복제되고 있지 않아야 합니다.

  • 테이블 잠금이 지정되어야 합니다(TABLOCK 사용).

    [!참고]

    대량 가져오기 작업을 최소 로깅으로 수행하는 동안 데이터 삽입은 트랜잭션 로그에 기록되지 않지만 새 익스텐트를 테이블에 할당할 때마다 데이터베이스 엔진에서 익스텐트 할당을 기록합니다.

테이블에 대한 최소 로깅의 발생 여부는 다음과 같이 테이블의 인덱싱 여부에 따라 달라지고, 테이블이 인덱싱되는 경우 테이블이 비어 있는지 여부에 따라 달라집니다.

  • 테이블에 인덱스가 없는 경우 데이터 페이지가 최소 로깅됩니다.

  • 테이블에 클러스터형 인덱스는 없지만 하나 이상의 비클러스터형 인덱스가 있는 경우 데이터 페이지는 항상 최소 로깅됩니다. 그러나 인덱스 페이지 로깅 방법은 다음과 같이 테이블이 비어 있는지 여부에 따라 달라집니다.

    • 테이블이 비어 있는 경우 인덱스 페이지가 최소 로깅됩니다.

    • 테이블이 비어 있지 않은 경우 인덱스 페이지가 모두 로깅됩니다.

      [!참고]

      빈 테이블로 시작하여 데이터 대량 가져오기를 다중 일괄 처리로 수행하는 경우 첫 번째 일괄 처리에서는 인덱스 및 데이터 페이지가 최소 로깅되지만 두 번째 일괄 처리부터는 데이터 페이지만 최소 로깅됩니다.

  • 테이블에 클러스터형 인덱스가 있고 비어 있는 경우 데이터 및 인덱스 페이지가 모두 최소 로깅됩니다. 이와 달리 테이블에 클러스터형 인덱스가 있고 비어 있지 않은 경우 데이터 페이지와 인덱스 페이지는 복구 모델에 관계없이 모두 로깅됩니다.

    [!참고]

    빈 테이블로 시작하여 데이터 대량 가져오기를 일괄 처리로 수행하는 경우 첫 번째 일괄 처리에서는 인덱스 및 데이터 페이지가 최소 로깅되지만 두 번째 일괄 처리부터는 데이터 페이지만 대량으로 로깅됩니다.

[!참고]

트랜잭션 복제를 사용하는 경우 대량 로그 복구 모델에서도 BULK INSERT 작업이 모두 기록됩니다.

관련 태스크

맨 위로 이동 링크와 함께 사용되는 화살표 아이콘[맨 위]

참고 항목

참조

bcp 유틸리티

BULK INSERT(Transact-SQL)

OPENROWSET(Transact-SQL)

BACKUP(Transact-SQL)

ALTER DATABASE(Transact-SQL)

테이블 힌트(Transact-SQL)

INSERT(Transact-SQL)

개념

복구 모델(SQL Server)