DB/MSSQL
[MSSQL] 대량 INSERT 시, 최소 로깅 모드(TABLOCK) 사용하기
alien22c
2024. 8. 23. 22:48
728x90
728x90
MSSQL에서 로깅을 최소화하는 방법
- 데이터베이스 복구 모델 : Simple 또는 BULK LOGGED 복구 모델을 사용
- SSIS(DTS), SELECT INTO..., BULK INSERT 등의 툴과 구문 사용
- INSERT 구문에 TABLOCK 힌트 사용
INSERT 구문에 사용하는 TABLOCK 힌트는 MSSQL 2008 버전부터 제공하는 기능으로
대량 INSERT 작업에서 각 행별로 로깅하지 않고, 익스텐트 할당 시에만 로깅을 함으로써 INSERT 처리 작업의 시간을 크게 단축할 수 있음
[충족조건]
- 복제 대상 테이블이 아니어야 함.
- 단순 대량 삽입 모드
- 인덱스 없는 대상 테이블
- 클러스터 인덱스가 있는 경우, 데이터가 없는 빈 테이블
[Syntax]
INSERT INTO 타겟테이블명 WITH(TABLOCK)
SELECT 컬럼명 FROM 소스테이블명 WITH(NOLOCK)
참고) 관련 MSDN
728x90
728x90