MSSQL - 빠르게 알아보는 데이터베이스 용량 경량화하기 (데이터 및 로그 축소)

반응형

데이터베이스의 용량을 축소하려면 크게 두 가지의 구문으로 나뉜다.

이는 사용자의 선택에 따라 사용하면 될 듯하다.

 

DBCC SHRINKDATABASE 구문

DBCC SHRINKDATABASE(데이터베이스명, 여유공간사이즈)
  • 데이터베이스의 파일(데이터, 로그)을 축소하여 디스크 공간을 회수하는 데 사용하는 명령어
  • 첫 번째 파라미터 : 축소하려는 데이터베이스의 이름을 입력
  • 두 번째 파라미터 : 선택사항, 데이터베이스 파일 내에서 남겨둘 여유 공간의 비율 입력
    • 예시1) 만약 '10'의 값을 입력할 경우에는 10% 여유 공간을 남김
    • 예시2) 파라미터의 값을 입력하지 않으면 여유 공간 없이 축소 진행

 

DBCC SHRINKFILE 구문

DBCC SHRINKFILE (파일이름, 축소할용량);
  • 특정 파일의 크기를 축소하여 사용하지 않는 디스크 공간을 회수하는 데 사용하는 명령어
  • 첫 번째 파라미터 : 축소하려는 파일의 이름 입력
  • 두 번째 파라미터 : 축소하려는 목표 파일의 크기(MB 단위) 입력
    • 예시1) 5의 값을 입력할 경우, 최대 5메가까지 축소 작업을 시도함

 

테스트 시나리오: 데이터베이스의 전체 파일 용량 축소하기

-- 현재 데이터베이스의 파일명을 모를 경우의 용량 확인
use xxx
exec sp_helpfile -- xxx 데이터베이스 데이터 파일 용량 415기가 / 로그 용량 91기가

-- DB 작업 축소 전 용량 확인
use xxx
SELECT name AS [파일명], size * 8 / 1024 AS [크기(MB)]
FROM sys.master_files
WHERE type_desc = 'ROWS' and name = 'xxx' -- 데이터 파일 축소 전 : 415816 MB

-- 필요 없는 데이터 삭제
delete from ~
truncate table ~

-- 데이터베이스 용량 축소
DBCC SHRINKDATABASE(xxx)

-- DB 작업 축소 후 용량 확인
use xxx
SELECT name AS [파일명], size * 8 / 1024 AS [크기(MB)]
FROM sys.master_files
WHERE type_desc = 'ROWS' and name = 'xxx' -- 데이터 파일 축소 전 : 92547MB

 

테스트 시나리오: 개발 환경에서의 로그 파일 용량 축소하기

복구 모델에 따라 용량 축소하는 방법이 다르다.

테스트 시나리오에서는 '전체 복구 모델'을 '간단 복구 모델'로 변경하여

로그의 정보를 백업하지 않고 날려버린 채 경량화 작업을 진행하도록 구성하였다.

이는 개발 환경에서는 상관없으나 실제 서비스 중인 데이터베이스에서는 위험할 수 있다.

-- DB 작업 축소 전 용량 확인
use xxx
SELECT name AS [파일명], size * 8 / 1024 AS [크기(MB)]
FROM sys.master_files
WHERE type_desc = 'LOG' and name = 'xxx_log' -- 로그 파일 축소 전 : 91528 MB

-- 로그를 아예 날려버리기 위해 간단 복구 모델로 변경
ALTER DATABASE xxx SET RECOVERY SIMPLE

-- 로그 파일 축소
DBCC SHRINKFILE (xxx_log, 5);  -- 5MB로 축소

-- 복구 모델을 다시 전체 복구로 변경
ALTER DATABASE xxx SET RECOVERY FULL

-- DB 작업 축소 후 용량 확인
use xxx
SELECT name AS [파일명], size * 8 / 1024 AS [크기(MB)]
FROM sys.master_files
WHERE type_desc = 'LOG' and name = 'xxx_log' -- 축소 후 : 5 MB

 

✅ 이 내용을 더 자세히 알아보려면?

이 글은 핵심 내용만 요약하여 빠르게 사용할 수 있도록 작성되었다.

데이터베이스 용량 관리에 대한 내용과 데이터베이스 용량 사이즈를 경량화할 때

복구 모델이 어떻게 사용되는지에 대한 자세한 설명은 아래의 링크에서 자세히 확인 가능하다.

 

MSSQL - 데이터베이스 용량 및 로그 사이즈 축소하기 - 은별 월드

혹시 데이터베이스 용량 때문에 고민해본 적이 있을까? 서비스를 운영하다 보면 자연스레 데이터가 계속 쌓이면서 데이터베이스 용량이 증가하고어느샌가 알게 모르게 디스크 공간이 부족해지

eunbyeol.co.kr

 

반응형