작업을 하던 도중 하드디스크 용량이 가득 차서 데이터가 더 이상 쌓이지 않는 문제가 발생하였다. 관계자에게 DB내 데이터를 삭제해도 된다는 확답을 듣고, DB용량을 확보하려 데이터를 삭제를 하였다.
허나 모든 테이블의 데이터를 삭제를 하더라도 여전히 해당 DB의 용량이 줄어들지 않고 그대로 남아 있는것을 확인하였다. 그래서 일전에 있었던 문제인 log파일의 모든 쿼리가 기록된 log파일이 생성되도록 설정 되어있는지 확인하였지만, 이또한 마찬가지로 설정이 꺼져있었고, log파일도 용량이 500MB 밖에 되지 않았었다.
그러다 계속된 검색을 통해 rdbms의 특징이자 데이터베이스의 관리 중 DB축소 (Shrink)에 알게 되었다.
rdbms의 특징으로는, 데이터가 저장됨에 따라 데이터 사이즈는 꾸준히 증가하게 되고, 감소하지는 않는다. 즉 데이터를 지워도 용량은 그대로 유지된다는 뜻이다.
대신 데이터를 지운 만큼의 여유공간은 그대로 두고 새로운 데이터가 저장됬을 때 그 공간을 계속 사용하게 된다.
따라서 주기적으로 데이터를 delete 해주면서 일정 수준의 용량으로 계속 쓰거나, 처음 db를 구축할 때 db용량을 제한시켜 두는 방법이 있다.
하지만 직접 데이터를 delete시키는 건 이전의 쌓아둔 데이터를 잃어버리는 것이니, 권장하지는 않고 잘 사용하지 않는다. 따라서 빈공간을 제거하여 디스크의 물리적인 파일 위치의 집적도를 높임으로써 스캔의 범위를 줄이는 방법을 추천한다.

NOTRUNCATE : 데이터를 정리만 하고 파일의 크기를 줄이지 않는다.
DBCC SHRINKDATABASE
( database_name | database_id | 0
[ , target_percent ][ , { NOTRUNCATE | TRUNCATEONLY } ])
[ WITH NO_INFOMSGS ]

TRUNCATEONLY : 데이터는 정리하지 않고 뒤의 남는 부분만 줄인다
