2018년 9월 29일 토요일

[SQL Server] DB 파일이 차지하는 공간을 알아보자

요즘은 로그 DB 삭제에 대해 많이 찾아 보곤 했는데 관련 내용을 정리해 두고자 한다. 우선 작업이 필요한 DB의 환경은 복구 모델이 simple 이다. 데이터를 삭제하는 작업을 진행할 경우 우선적으로 지우지 않아야 하는 데이터를 지우면 안되기 때문에 항상 신중하게 작업을 할 수 밖에 없다. 해당 DB를 정리하는 목적은 우선적으로 6개월 이상 지난 로그를 사용하지 않고 있기 때문에 데이터를 정리하면서 유휴 공간을 확보하고자 함이다. 

기본적으로 해당 DB의 MDF 파일이 물리적 (실제적)으로 얼마나 큰 공간을 차지하고 있는지를 알아야 한다. 그 때 필요한 명령어가 sp_spaceused 이다

sp_spaceused 를 실행하면 다음과 같은 내용을 확인 할 수 있다.

database_name : 현재 DB의 이름
database_size : 현재 데이터 베이스의 크기(MB) 해당 사이즈에는 데이터 및 로그 파일의 크기가 모두 포함된다. 그러므로 database_size > reserved + unallocated space  이다.
unallocated space : DB 개체용으로 예약 되지 않은 DB 공간
reserved : DB의 개체에 의해 할당된 총 공간
data : 데이터가 사용 중인 공간
index_size : 인덱스가 사용하는 총 공간
unused : DB의 개체에 예약 되었으나 아직 사용되지 않은 총 공간

만약 DB에서 특정 테이블이 차지하는 공간을 알고 싶을 때는

USE DB_Name
Go
exce sp_spaceused N'테이블명'
GO

으로 확인 할 수 있다.
이와 같은 방식으로 로그를 삭제하고 난 후 shrinkfile 작업을 할때 어느 정도의 유휴공간이 있는지를 확인할 수가 있다.


댓글 없음:

댓글 쓰기