반응형

정기적으로 로그 백업을 하고 있다면 로그 파일 크기 내에서 재활용은 하겠지만, 대량의 트랜잭션이 발생하여 로그파일의 크기가 늘어나더라도 로그 백업을 통해 이미 늘어난 파일 크기가 줄어들지는 않습니다. 이로 인해서 불필요하게 디스크 공간을 차지하게 되므로 가끔씩 로그파일 크기를 줄여줄 필요가 있습니다.

현재 로그파일 크기 확인

sp_helpfile

sp_helpfile로 확인해 보면 현재 로그파일 크기가 9,024,448 KB로 나타납니다 (운영 중인 DB라 가렸습니다).

이는 탐색기에서 확인되는 사이즈와 동일합니다.

VLF 구성 확인

DBCC loginfo

DBCC loginfo로 로그파일의 VLF(가상 로그 파일)를 확인해 보면 81개로 구성되어 있음을 알 수 있습니다.

로그파일 크기 줄이기

sp_helpfile 조회 결과의 'name' 컬럼에 해당하는 이름이 로그파일명 입니다.

DBCC SHRINKFILE (로그파일명)

DBCC SHRINKFILE 명령이 정상적으로 수행되면 다음과 같이 결과를 보여 줍니다.

위에서 CurrentSize는 줄어든 후 로그파일의 페이지 수를 나타냅니다. SQL 서버에서 한 페이지는 8KB 이므로 KB로 변경하면 1,025,504 * 8 = 8,204,032 가 됩니다.

sp_helpfile로 다시 확인해보면 다음과 같습니다.

작업 직전에 로그 백업을 받고 진행하지 않아서 많이 줄어들지는 않았지만 그래도 크기가 줄어들었습니다.

DBCC loginfo로 재확인 해보면 VLF 개수가 80개로 줄었습니다.

참고로 쿼리로 로그 테이블의 초기 사이즈를 확인하기 위해서는 다음과 같이 하면 됩니다.

SELECT name, size * 8 AS init_size_KB, physical_name
FROM master.sys.master_files where database_id = DB_ID('데이터베이스명')

DBCC SHRINKFILE를 통해 줄어들 수 있는 최대치는 이 초기 사이즈이기 때문에 이하로는 줄어들지 않습니다.

[참조]

DBCC SHRINKFILE(Transact-SQL)

+ Recent posts