로그 축소 테스트
예전에 로그백업 후 로그를 축소했는데 용량이 원하는 만큼 줄어들지 않고 다시한번 로그백업 후 축소를 하면 원하는대로 줄어드는 현상이 있어 확인해본 결과 로그 축소시 활성 VLF의 뒷부분만 축소가 된다는 것을 알게 되었었다.
오늘은 이 부분에 대해 실제로 테스트를 해 보았다.
select @@version
-- 집에 있는 노트북에 패치가 안되어 있었네요; 인터넷이 열악한 상황이라 패치하기가 힘드니 뭐라하지 마세요~ ^^;
Microsoft SQL
Server 2005 - 9.00.1399.06 (Intel X86) Oct 14 2005
Copyright (c) 1988-2005 Microsoft Corporation
Standard Edition on Windows NT 5.1 (Build 2600: Service Pack 3)
-- drop database logtest
CREATE DATABASE [logTest] ON PRIMARY
( NAME = N'logTest', FILENAME = N'D:\logTest.mdf' , SIZE = 10MB , MAXSIZE = UNLIMITED, FILEGROWTH = 1MB )
LOG ON
( NAME = N'logTest_log', FILENAME = N'D:\logTest_log.LDF' , SIZE = 1MB , MAXSIZE = 2048GB , FILEGROWTH = 1MB)
go
use logTest
go
-- Full backup을 한번 한다
backup database logTest to disk = 'd:\logtest.bak' with init
-- 로그 파일을 1M씩 2회 증가 시킨다.
dbcc loginfo
alter database [logTest] modify file (name = 'logTest_log', SIZE = 2MB)
alter database [logTest] modify file (name = 'logTest_log', SIZE = 3MB)
dbcc loginfo
-- 로그를 적당히 쌓고 한다. 2.3M정도 로그가 쌓인 것을 확인할 수 있다.
create table t1 (col1 int, col2 char(7000))
go
insert into t1 select 1,''
go 260
dbcc loginfo
-- 로그백업 후 변화를 확인한다. 논리로그 끝을 포함한 VLF만 활성상태로 남았다.
backup log logtest to disk = 'd:\logtest.trn' with init
dbcc loginfo
-- 로그 축소를 하면 확성 VLF뒷부분만 잘린 것을 확인할 수 있다. 즉 뒤쪽 3개의 VLF만 반환된 것을 확인할 수 있다.
dbcc shrinkfile (logTest_log, 1)
-- 다시한번 로그백업 다음
backup log logtest to disk = 'd:\logtest.trn' with init
dbcc loginfo
-- 다시 로그 축소를 하면 역시 뒷부분만 잘려 원하는 크기로 줄어든 것을 확인할 수 있다.
dbcc shrinkfile (logTest_log, 1)