bw#
SHRINK - SHRINKDATABASE / SHRINKFILE 본문
[SHRINK]
- 디스크 용량이 부족하거나 로그 파일이 불필요하게 늘어났을 때 이용
- SHRINKDATABASE와 SHRINKFILE이 존재
- SHRINKDATABASE는 해당 데이터베이스의 데이터파일, 로그파일에 적용
- SHRINKFILE은 특정 데이터파일, 로그파일을 축소 - 원하는 DB 우클릭 - [태스크] - [축소] - [파일] 선택 시 얼마나 축소 시킬 수 있는지 확인 가능
1. 파일 축소
DBCC SHRINKFILE ( [file명 | file_id] { , emptyfile } | { , target_size, [NOTRUNCATE | TRUNCATEONLY] } )
① ② ③ ④
① 축소할 파일명 또는 file_id입력
② 지정한 파일의 모든 데이터를 동일한 파일그룹의 다른 파일로 migration
③ 해당 파일이 데이터가 저장된적없는 빈 파일일 경우 기본 크기를 새로 지정,
DB 축소 후 뒤에 남겨둘 여유 공간의 비율 (db 크기의 해당 비율만큼을 여유공간으로 잡음)
NOTRUNCATE VS TRUNCATEONLY ; 옵션을 선택하지 않을 경우 둘다 수행
2. 데이터베이스 축소
DBCC SHRINKDATABASE ( [DB명 | database_id | 0] { , target_percent , [NOTRUNCATE | TRUNCATEONLY] } )
① ② ③
① 축소할 DB명 또는 database_id 입력. 0은 현재 데이터베이스 의미
② DB 축소 후 뒤에 남겨둘 여유 공간의 비율 (db 크기의 해당 비율만큼을 여유공간으로 잡음)
③ NOTRUNCATE VS TRUNCATEONLY ; 옵션을 선택하지 않을 경우 둘다 수행
※ NOTRUNCATE / TRUNCATEONLY
1) 현재 상태
2) 'B' DELETE
3-1) NOTRUNCATE 옵션 : 할당되지 않은 여유공간을 데이터 파일 끝으로 이동, 파일크기가 줄어들진 않는다.
3-2) TRUNCATEONLY 옵션 : 데이터 파일 끝의 할당되지 않은 여유공간을 TRUNCATE, 파일크기를 줄인다.
*해당 건은 데이터 파일의 끝에 여유공간이 없으므로 아무일도 일어나지 않는다.
3-3) 옵션 없이 SHRINK : NOTRUNCATE > TRUNCATEONLY 순으로 진행
3. DBCC SHRINKFILE 후 출력 결과값
DbId |
FileId |
CurrentSize |
MinimumSize |
UsedPages |
EstimatedPages |
6 |
2 |
1296472 |
108752 |
1296472 |
108752 |
DbId : 축소하려고 시도한 파일의 데이터베이스 ID
- FileId : 축소하려고 시도한 파일의 파일 ID 번호
- CurrentSize : 현재 파일이 차지하고 있는 8KB 페이지의 수 --> 1296472 * 8 = 현재 축소된 파일의 크기
- MinimumSize : 파일이 최소한으로 차지할 수 있는 8KB 페이지의 수 -- > 108752 * 8 = 파일이 최소한으로 작아질 수 있는 크기
- UsedPages : 현재 파일에서 사용되는 8KB 페이지의 수
- EstimatedPages : SQL Server에서 예상하는 파일 축소 가능 크기에 해당하는 8KB 페이지의 수