대량 가져오기를 위한 잠금 동작 제어

업데이트: 2005년 12월 5일

bcp 명령, BULK INSERT 문 및 INSERT ... SELECT * FROM OPENROWSET(BULK...) 문을 사용하면 대량 가져오기 작업을 수행하는 동안 테이블이 잠기도록 지정할 수 있습니다.

테이블 잠금을 지정할 때 대량 가져오기 작업을 수행하는 동안 대량 업데이트 테이블 수준 잠금이 적용됩니다. 테이블 잠금은 테이블의 잠금 경합을 줄여 대량 가져오기 작업의 성능을 향상시킵니다.

테이블 잠금을 사용하지 않을 경우 table lock on bulk load 옵션이 on으로 설정되지 않으면 기본적으로 행 수준 잠금이 사용됩니다. sp_tableoption을 사용하여 table lock on bulk load 옵션을 설정하면 대량 가져오기 작업을 수행하는 동안 테이블에 대해 잠금 동작이 설정됩니다.

대량 가져오기의 테이블 잠금 테이블 잠금 동작

사용 안 함

행 수준 잠금 사용됨

사용함

테이블 수준 잠금 사용됨

테이블 잠금이 지정되면 대량 가져오기 작업을 수행하는 동안 sp_tableoption으로 설정한 테이블의 기본 설정이 무시됩니다.

[!참고] 반드시 테이블 잠금을 사용하여 여러 클라이언트의 데이터를 병렬로 테이블에 대량으로 가져올 필요는 없지만 이렇게 하면 성능이 향상됩니다.

명령 한정자

다음 표에서는 다량 가져오기 명령에 테이블 잠금을 지정하기 위한 한정자를 요약합니다.

명령 한정자 한정자 유형

bcp

-h"TABLOCK"

힌트

BULK INSERT

TABLOCK

인수

INSERT ... SELECT * FROM OPENROWSET(BULK...)

WITH(TABLOCK)

테이블 힌트

[!참고] SQL Server 2005에서 클러스터형 인덱스가 있는 테이블에 TABLOCK을 지정하면 병렬로 데이터 대량 가져오기를 수행할 수 없습니다. 이 경우 병렬 대량 가져오기를 수행하려면 TABLOCK을 사용하지 마십시오. 병렬 대량 로드에 대한 자세한 내용은 대량 가져오기 최적화 지침을 참조하십시오.

참고 항목

개념

데이터베이스 엔진에서의 잠금

관련 자료

bcp 유틸리티
BULK INSERT(Transact-SQL)
OPENROWSET(Transact-SQL)
sp_tableoption(Transact-SQL)

도움말 및 정보

SQL Server 2005 지원 받기