DBCC SHRINKFILE 명령어는 DBCC에서 제공하는 데이터 용량을 줄이는 명령어입니다.
사용법
DBCC SHRINKFILE
(
{ file_name | file_id }
{ [ , EMPTYFILE ]
| [ [ , target_size ] [ , { NOTRUNCATE | TRUNCATEONLY } ] ]
}
)
[ WITH NO_INFOMSGS ]
- file_name : 축소할 파일의 논리적 이름
- file_id : 축소할 파일의 ID
- target_size : 축소할 파일의 사이즈 (MB)
- EMPTYFILE : 다른 파일로 데이터를 옮긴다. (단, 같은 그룹 내 파일이어야 함)
- NOTRUNCATE : target_size 값과 관계없이 데이터 파일의 끝에서 할당된 데이터를 파일 앞의 할당되지 않은 공간으로 이동만 한다. (파일이 축소되지 않은 것처럼 보임) -> 디스크 조각 모음과 유사
- TRUNCATEONLY : 파일 끝의 모든 사용 가능한 공간을 운영체제에 반납한다. (데이터 이동은 없음)
USE 데이터베이스명 // 데이터베이스에 연결
BACKUP LOG 데이터베이스명 WITH NO_LOG // 로그 파일을 삭제
DBCC SHRINKFILE (데이터베이스명_log, TRUNCATEONLY) // 파일 크기는 가장 작게 설정
MS-SQL 2008 이상에서의 로그축소 방법
USE 데이터베이스명
GO
ALTER DATABASE 데이터베이스명 SET RECOVERY SIMPLE
GO
DBCC SHRINKFILE(데이터베이스명_log, 100) // 두 번째 인자는 MB 기준
GO
ALTER DATABASE 데이터베이스명 SET RECOVERY FULL
GO
MS-SQL 2008 부터는 복구 모델이 '전체' 였으면 '단순' 으로 변경하고 로그파일을 줄여야 합니다.
전체 복구 모델 - Full Recovery Model
대량 로그 복구 모델 - Bulked-Log Recovery Model
단순 복구 모델 - Simple Recovery Model
USE 데이터베이스명
GO
ALTER DATABASE 데이터베이스명 SET RECOVERY SIMPLE
GO
DBCC SHRINKFILE(데이터베이스명_log) // 두 번째 인자가 비어있거나 0 이면 파일크기 최소로 설정
GO
ALTER DATABASE 데이터베이스명 SET RECOVERY FULL
※ 만약 축소가 안 되는 경우가 발생하면
※ tempdb의 경우 재부팅하면 초기화됨
1. TempDB의 초기 사이즈를 확인하는 방법
SELECT name, size*8 AS init_size_KB, physical_name
FROM master.sys.master_files where database_id=2
2. TempDB의 현재 사이즈를 확인하는 방법
SELECT name, size*8, physical_name
FROM tempdb.sys.database_files
또는
sp_helpdb tempdb
3. TempDB 초기 사이즈 변경방법(현재 사이즈에 영향 없음)
ALTER DATABASE TEMPDB MODIFY FILE(NAME='TEMPDEV', SIZE=1GB, FILEGROWTH=100MB)
'DB > MSSQL' 카테고리의 다른 글
MSSQL - TOP()과 ROW_NUMBER()를 활용한 데이터 조회 방법 (0) | 2024.09.27 |
---|