파일 축소

적용 대상:SQL ServerAzure SQL DatabaseAzure SQL Managed Instance

이 문서에서는 SQL Server Management Studio 또는 Transact-SQL을 사용하여 SQL Server에서 데이터 또는 로그 파일을 축소하는 방법을 설명합니다.

데이터 파일을 축소하면 파일의 끝에서 파일 앞부분에 있는 비어 있는 공간으로 데이터 페이지를 이동하여 공간을 복구할 수 있습니다. 파일 끝에 사용 가능한 공간을 충분히 확보한 다음 파일 끝에 있는 데이터 페이지를 할당 해제하고 파일 시스템에 반환할 수 있습니다.

제한 사항

  • 기본 데이터 파일은 모델 데이터베이스의 주 파일 크기보다 작게 만들 수 없습니다.

권장 사항

  • 축소 작업은 큰 DELETE 문, 테이블 잘라내기 또는 테이블 삭제 작업과 같이 사용되지 않은 저장 공간을 많이 생성하는 작업 후에 가장 효과적입니다.

  • 대부분의 데이터베이스에는 정기적인 일상 작업에 사용 가능한 일정 여유 공간이 필요합니다. 데이터베이스 파일을 반복해서 축소하지만 데이터베이스 크기가 다시 늘어나는 경우 이는 일반 작업을 위한 여유 공간이 필요함을 나타냅니다. 이러한 경우 데이터베이스 파일을 반복해서 축소하는 것은 불필요한 작업입니다. 데이터베이스 파일을 증가시키는 데 필요한 자동 증가 이벤트는 성능을 저하합니다.

  • 파일 축소를 위해 이동되는 데이터는 파일 내의 모든 사용 가능한 위치로 분산될 수 있습니다. 이로 인해 인덱스 조각화가 발생하고 인덱스 범위를 검색하는 쿼리의 성능이 저하될 수 있습니다. 조각화를 제거하려면 축소한 후 파일의 인덱스를 다시 빌드하는 것이 좋습니다.

  • 특정 요구 사항이 없으면 AUTO_SHRINK 데이터베이스 옵션을 ON으로 설정하지 마세요.

설명

진행 중인 축소 작업은 데이터베이스의 다른 쿼리를 차단할 수 있으며 이미 진행 중인 쿼리에 의해 차단될 수 있습니다. SQL Server 2022(16.x)에 도입된 축소 파일 작업에는 WAIT_AT_LOW_PRIORITY 옵션이 있습니다. 이 기능은 DBCC SHRINKDATABASEDBCC SHRINKFILE에 대한 새로운 추가 옵션입니다. WAIT_AT_LOW_PRIORITY 모드의 새 축소 작업이 이미 진행 중인 장기 실행 쿼리로 인해 필요한 잠금을 얻을 수 없는 경우 축소 작업은 결국 1분 후에 시간이 초과되고 자동으로 종료되어 다른 쿼리가 차단되지 않습니다. WAIT_AT_LOW_PRIORITY 데이터 파일(.mdf 및 .ndf)에 적용됩니다. 트랜잭션 로그 파일에는 적용되지 않습니다. 자세한 내용은 DBCC SHRINKFILE을 참조하세요.

사용 권한

sysadmin 고정 서버 역할의 멤버 또는 db_owner 고정 데이터베이스 역할의 멤버여야 합니다.

SSMS(SQL Server Management Studio) 사용

SSMS를 사용하여 데이터 또는 로그 파일을 축소하려면

  1. 개체 탐색기 SQL Server 데이터베이스 엔진 인스턴스에 연결한 다음 해당 인스턴스를 확장합니다.

  2. 데이터베이스를 확장 다음 축소할 데이터베이스를 마우스 오른쪽 단추로 클릭합니다.

  3. 작업, 축소를 차례로 가리킨 다음, 파일을 선택합니다.

    Database
    선택한 데이터베이스의 이름을 표시합니다.

    파일 형식
    파일의 파일 형식을 선택합니다. 데이터로그 파일 중에 선택할 수 있습니다. 기본 선택은 Data입니다. 다른 파일 그룹 형식을 선택하면 그에 따라 다른 필드의 선택 영역이 변경됩니다.

    파일 그룹
    위에서 선택한 파일 형식 과 연결된 파일 그룹 목록에서 파일 그룹을 선택합니다. 다른 파일 그룹을 선택하면 변경 내용에 따라 다른 필드의 선택 내용도 변경됩니다.

    파일 이름
    선택한 파일 그룹 및 파일 형식의 사용 가능한 파일 목록에서 파일을 선택합니다.

    위치
    현재 선택한 파일의 전체 경로를 표시합니다. 경로를 편집할 수 없지만 클립보드에 복사할 수 있습니다.

    현재 할당된 공간
    데이터 파일의 경우 현재 할당된 공간을 표시합니다. 로그 파일의 경우 DBCC SQLPERF(LOGSPACE)의 출력에서 계산된 현재 할당된 공간을 표시합니다.

    사용 가능한 공간
    데이터 파일의 경우 DBCC SHOWFILESTATS(fileid)의 출력에서 계산된 사용 가능한 현재 사용 가능한 공간을 표시합니다. 로그 파일의 경우 DBCC SQLPERF(LOGSPACE)의 출력에서 계산된 사용 가능한 현재 사용 가능한 공간을 표시합니다.

    사용되지 않는 공간 해제
    파일에서 사용되지 않는 공간을 운영 체제에 릴리스하고 파일을 마지막으로 할당된 범위로 축소하여 데이터를 이동하지 않고 파일 크기를 줄입니다. 행을 할당되지 않은 페이지로 재배치하려고 시도하지 않습니다.

    사용되지 않는 공간을 해제하기 전에 페이지 다시 구성
    대상 파일 크기를 지정하는 DBCC SHRINKFILE 실행과 동일합니다. 이 옵션을 선택하면 사용자가 축소 파일에서 대상 파일 크기를 상자로 지정해야 합니다.

    파일을
    축소 작업의 대상 파일 크기를 지정합니다. 크기는 현재 할당된 공간보다 작거나 파일에 할당된 총 익스텐트보다 작을 수 없습니다. 최소값 또는 최대값을 초과하는 값을 입력하면 포커스가 변경되거나 도구 모음의 단추를 클릭하면 최소 또는 최대값으로 되돌리기.

    동일한 파일 그룹의 다른 파일로 데이터를 마이그레이션하여 빈 파일
    지정된 파일에서 모든 데이터를 마이그레이션합니다. 이 옵션을 사용하면 ALTER DATABASE 문을 사용하여 파일을 삭제할 수 있습니다. 이 옵션은 EMPTYFILE 옵션을 사용하여 DBCC SHRINKFILE을 실행하는 것과 같은 기능을 수행합니다.

  4. 파일 형식 및 파일 이름을 선택합니다.

  5. 필요에 따라 사용되지 않는 공간 검사 해제 상자를 선택합니다.

    이 옵션을 선택하면 파일의 사용되지 않은 공간이 운영 체제로 해제되고 파일이 마지막으로 할당된 범위로 축소됩니다. 이렇게 하면 데이터를 이동하지 않고 파일 크기를 줄일 수 있습니다.

  6. 필요에 따라 사용하지 않는 공간 검사 상자를 해제하기 전에 파일 다시 구성을 선택합니다. 이 옵션을 선택하면 값으로 축소 파일을 지정해야 합니다. 기본적으로 옵션은 지워집니다.

    이 옵션을 선택하면 파일의 사용되지 않는 공간이 운영 체제로 해제되고 행을 할당되지 않은 페이지로 재배치하려고 합니다.

  7. 선택적으로 데이터베이스를 축소한 후 데이터베이스 파일에 남겨둘 여유 공간의 최대 비율을 입력합니다. 허용되는 값은 0에서 99 사이입니다. 이 옵션은 사용하지 않은 공간을 해제하기 전에 파일 다시 구성 을 활성화한 경우에만 사용할 수 있습니다.

  8. 필요에 따라 동일한 파일 그룹 검사 상자의 다른 파일로 데이터를 마이그레이션하여 빈 파일을 선택합니다.

    이 옵션을 선택하면 지정된 파일의 모든 데이터가 파일 그룹의 다른 파일로 이동합니다. 그런 다음 빈 파일을 삭제할 수 있습니다. 이 옵션은 EMPTYFILE 옵션을 사용하여 DBCC SHRINKFILE을 실행하는 것과 동일합니다.

  9. 확인을 선택합니다.

Transact-SQL 사용

Transact-SQL을 사용하여 데이터 또는 로그 파일을 축소하려면

  1. 데이터베이스 엔진에 연결합니다.

  2. 표준 도구 모음에서 새 쿼리를 선택합니다.

  3. 다음 예제를 복사하여 쿼리 창에 붙여넣고 실행을 선택합니다. 이 예제에서는 DBCC SHRINKFILE을 사용하여 데이터베이스에 UserDB 명명된 DataFile1 데이터 파일의 크기를 7MB로 줄입니다.

USE UserDB;
GO
DBCC SHRINKFILE (DataFile1, 7);
GO

참고 항목

다음 단계