티스토리 뷰

전체 복구모델 데이터베이스에서 트랜잭션 로그의 Truncate 동작을 확인합니다.

 

**개인적인 결론

- 복구모델이 '전체'로 설정된 데이터베이스라도 첫 번째 전체백업을 받기 전까지는 단순모드와 비슷하게 트랜잭션 로그 파일을 자동으로 Truncate 하는 동작을 한다. 이때의 트랜잭션 로그는 '데이터무결성'을 위해서만 사용되며, 첫 번째 전체백업 전의 트랜잭션 로그는 복구 용도로는 무의미하다.

 

--TestDB 데이터베이스 생성
- 테스트를 위해 트랜잭션 로그파일의 자동 증가 값을 0으로 지정하고 MAXSIZE를 100MB로 제한

use master

GO

   

IF DB_ID('TestDB') IS NOT NULL

DROP DATABASE TestDB

GO

   

   

CREATE DATABASE TestDB

ON PRIMARY (

NAME = N'TestDB'

, FILENAME = N'E:\Program Files\Microsoft SQL Server\MSSQL10_50.SQL2008R2\MSSQL\DATA\TestDB.mdf'

, SIZE = 307200KB

, FILEGROWTH = 1024KB

)

LOG ON (

NAME = N'TestDB_log'

, FILENAME = N'E:\Program Files\Microsoft SQL Server\MSSQL10_50.SQL2008R2\MSSQL\DATA\TestDB_log.ldf'

, SIZE = 102400KB

, MAXSIZE = 102400KB

, FILEGROWTH = 0)

GO

   

--데이터베이스 생성

   

--복구모델(전체), 트랜잭션 로그 파일의 Maxsize(10MB), growth(0) 설정 확인

   

--t1 테이블 생성

   

테스트)

   

#1. t1 테이블에 데이터를 INSERT하고 로그파일 사용량 체크

- 9000행 삽입 완료

- Log Space Used 약 80%

DECLARE @ctr INT

SELECT @ctr = 0

BEGIN TRAN

WHILE (@ctr < 9000)

BEGIN

INSERT t1 VALUES(@ctr, 'x')

SELECT @ctr = @ctr + 1

END

COMMIT TRAN

Go

   

   

   

#2. #1의 동작을 반복 수행 후 결과 체크

- 9000행 삽입 실패

- Log Space Used 약 23%

   

   

#3. #1의 동작을 반복 수행 후 결과 체크

- 9000행 삽입 성공

- Log Space Used 약 83%

   

   

**테스트 수행 결과 - 전체복구모드의 데이터베이스 로그가 마치 단순모드의 트랜잭션 로그처럼 동작한다.

의아한 생각이 들어 추가 테스트를 진행하였다.

   

   

#4. Checkpoint 수동 실행

- 예상대로 체크포인트를 실행하니 TestDB의 트랜잭션 로그가 Truncate 되었다.(단순모드와 같다.)

   

#5. TestDB 데이터베이스 전체 백업 수행 후

   

#6. 추가 데이터 INSERT

- 9000행 삽입 성공

- Log Space Used 약 81%

   

#7. Checkpoint 수동 실행

- 로그가 Truncate 되지 않음(그대로 유지)

   

#8. 데이터 추가 INSERT 실행

- 9000행 삽입 실패

- Log Space Used 약 100%

   

참조

Transaction Log Truncation (http://technet.microsoft.com/en-us/library/ms189085(v=sql.105).aspx)

Transaction Log Logical Architecture (http://technet.microsoft.com/en-us/library/ms180892(v=sql.105).aspx)

꽉 찬 트랜잭션 로그 문제 해결(오류 9002) (http://technet.microsoft.com/ko-kr/library/ms175495(v=sql.105).aspx)

댓글
글 보관함
최근에 달린 댓글
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Total
Today
Yesterday