shirink file이란

By | 2025-07-28

SHRINKFILE은 SQL Server에서 데이터베이스 파일(예: MDF, NDF, LDF)물리적인 크기를 줄이는 명령어입니다. 특히, 사용되지 않는 여유 공간(free space) 을 회수하여 파일 크기를 줄이는 데 사용됩니다.


📌 DBCC SHRINKFILE 이란?

DBCC SHRINKFILE은 특정 데이터베이스 파일에서 사용하지 않는 공간을 반환하여 파일 크기를 줄이는 명령어입니다.

📚 문법:

DBCC SHRINKFILE (logical_file_name, target_size_in_MB);
인자설명
logical_file_namesys.database_files에 나오는 파일의 논리적 이름
target_size_in_MB축소 후 원하는 파일 크기(MB 단위). SQL Server는 가능한 한 여기에 가깝게 축소

🧠 예시

-- 파일 이름 확인
SELECT name, type_desc, size * 8 / 1024 AS size_MB
FROM sys.database_files;

-- 예: 'MyDatabase'의 데이터 파일을 200MB로 줄이기
USE MyDatabase;
DBCC SHRINKFILE (MyDataFile, 200);

🧱 작동 방식

  • SQL Server는 데이터 파일에서 뒤쪽의 사용되지 않은 페이지를 찾아서 앞부분으로 압축(compact) 하고, 그 뒤의 빈 공간을 잘라냄
  • 실제 데이터가 차 있는 공간은 줄일 수 없음 → 압축은 “빈 공간”에만 가능

🟡 주의 사항

문제설명
❗ 성능 저하SHRINK는 많은 디스크 I/O 발생, CPU도 사용됨
❗ 인덱스 조각화인덱스 페이지를 무작위로 이동 → 심각한 조각화 발생
❌ 자주 사용 금지주기적인 SHRINK는 비효율적이고 오히려 성능에 악영향
✅ 유지보수 후 단발성 사용대용량 TRUNCATE, 삭제 후 한 번 SHRINK하는 건 OK

📌 사용 시점

상황SHRINKFILE 사용 여부
✅ 대용량 데이터 삭제/TRUNCATE 후가능
✅ 백업 전 일시적으로 공간 줄이기가능
❌ 정기적으로 사용비권장
❌ 공간이 곧 다시 필요할 예정일 때비효율적 (축소 → 다시 확장됨)

✅ 자주 함께 쓰는 쿼리

-- 사용 중인 공간과 전체 공간 확인
SELECT 
    name AS LogicalName,
    size * 8 / 1024 AS SizeMB,
    FILEPROPERTY(name, 'SpaceUsed') * 8 / 1024 AS UsedMB
FROM sys.database_files;

🎯 요약

항목설명
목적파일 크기 줄여 디스크 공간 회수
대상데이터 파일(MDF, NDF) 또는 로그 파일(LDF)
명령어DBCC SHRINKFILE
위험인덱스 조각화, 성능 저하
권장 사용정리 후 1회성 SHRINK만!

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다