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