MDF 파일의 축소 방법에 대해 간단히 예제 올려봅니다 -_-;;
먼저 데이터베이스를 단독 사용자 모드로 변경한다.
ALTER DATABASE PRODUCT_DB SET SINGLE_USER WITH ROLLBACK IMMEDIATE-ml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />-ml:namespace prefix = o />-ml:namespace prefix = o />-ml:namespace prefix = o />
USE PRODUCT_DB
1. 데이터 파일의 할당 정보는 아래의 명령어로 사용할수 있다.
DBCC SHOWFILESTATS
--------------------------------------------------------------------------------------------------------------------------------
Fileid FileGroup TotalExtents UsedExtents Name FileName
1 1 1283379 113056 PRODUCT_DB M:\PRODUCT_DB.MDF
(1개행적용됨)
DBCC 실행이완료되었습니다. DBCC에서오류메시지를출력하면시스템관리자에게문의하십시오.
--------------------------------------------------------------------------------------------------------------------------------
유명하신 라이고님의 블로그에서 1MB가 16 Extents 라는 설명을보고 계산을 하게 되었다
총 TotalExtents 1283379 / 16 = 80211 -> 80GB
현재 사용 UseExtents 113056 / 16 = 7066 -> 7GB
데이터파일 PRODUCT_DB.mdf 를 20GB로 축소하기 실제 TotalExtents 의 크기가 줄어든다 .
2. 데이터파일 축소
DBCC SHRINKFILE(PRODUCT_DB,20000)
파일 정보를 다시 확인해본다.
--------------------------------------------------------------------------------------------------------------------------------
Fileid FileGroup TotalExtents UsedExtents Name FileName
1 1 320000 112932 PRODUCT_DB M:\PRODUCT_DB.MDF
(1개행적용됨)
DBCC 실행이완료되었습니다. DBCC에서오류메시지를출력하면시스템관리자에게문의하십시오.
--------------------------------------------------------------------------------------------------------------------------------
TotalExtents 가 320000으로 변경되었다.
320000 / 16 = 20000 -> 20GB
3. NOTRUNCATE를 이용한 빈공간 정리
파일의 사용되지 않는 부분을 정리한다.
DBCC SHRINKFILE(PRODUCT_DB,NOTRUNCATE)
4. TRUNCATEONLY를 이용한 데이터 파일 축소
DBCC SHRINKFILE(PRODUCT_DB , TRUNCATEONLY)
DBCC SHOWFILESTATS
파일의 사용되지 않는 부분이 모두 잘려나간다.
--------------------------------------------------------------------------------------------------------------------------------
Fileid FileGroup TotalExtents UsedExtents Name FileName
1 1 319523 112932 PRODUCT_DB M:\PRODUCT_DB.MDF
(1개행적용됨)
DBCC 실행이완료되었습니다. DBCC에서오류메시지를출력하면시스템관리자에게문의하십시오.
--------------------------------------------------------------------------------------------------------------------------------
허허 TotalExtents가 조금밖에 줄지를 않았다 112932까지 줄어야하는데 ..
이유는 TRUNCATEONLY를 실행하기전 . NOTRUNCATE 옵션으로 빈공간 정렬을 먼저 실행하지 않아서 그런거같다 -_-ㅋ
전문가 분들에게 문의해본결과 축소는 특별한 상황 아닌이상 절대 추천하지 않는다 합니다..
축소에 관한 자세한 정보는 유명하신 SQL Server MVP 강상욱님 블로그에 있습니다.
'MS-SQL > Query' 카테고리의 다른 글
MS-SQL SERVER 2008 OPENROWSET 사용가능케 SP_CONFIGURE 설정 (0) | 2014.01.07 |
---|---|
데이터베이스 생성 스크립트 (0) | 2014.01.07 |
UTF-8 Text 파일 Bulk Insert 시 한글깨짐 현상 해결 방안 (0) | 2013.12.24 |
간단히 퍼센트 구해보기 (0) | 2013.10.14 |
데이터베이스 무결성 검사 (0) | 2013.07.03 |