DBCC SHRINKDATABASE
예시)
DBCC SHRINKDATABASE ( database_name | database_id | 0 [ , target_percent ] [ , { NOTRUNCATE | TRUNCATEONLY } ] )
database_name | database_id | 0
축소할 데이터베이스의 이름 또는 ID입니다. 0은 현재 데이터베이스가 사용됨을 나타냅니다.
target_percent
축소 작업이 완료된 후 데이터베이스 파일에 남겨둘 여유 공간의 백분율입니다.
NOTRUNCATE
할당된 페이지를 파일 끝에서 파일 앞의 할당되지 않은 페이지로 이동합니다. 이 작업은 파일 내의 데이터를 압축합니다. target_percent는 선택 사항입니다. Azure Synapse Analytics에서는 이 옵션을 지원하지 않습니다.
파일 끝의 여유 공간이 운영 체제로 반환되지 않고, 파일의 실제 크기가 변경되지 않습니다. 따라서 NOTRUNCATE
를 지정할 때 데이터베이스는 축소되지 않는 것으로 나타납니다.
NOTRUNCATE
는 데이터 파일에만 적용됩니다. NOTRUNCATE
는 로그 파일에 영향을 주지 않습니다.
=> 데이터의 정렬만 할 뿐 파일의 크기에 영향을 미치치 않는다.
TRUNCATEONLY
파일 끝의 모든 여유 공간을 운영 체제로 릴리스합니다. 파일 내의 어떤 페이지도 이동하지 않습니다. 데이터 파일은 마지막으로 할당된 익스텐트까지 축소됩니다. 로 지정된 경우 TRUNCATEONLY
는 무시됩니다. Azure Synapse Analytics에서는 이 옵션을 지원하지 않습니다.
DBCC SHRINKDATABASE
옵션을 사용하는 TRUNCATEONLY
는 데이터베이스 트랜잭션 로그 파일에만 영향을 줍니다. 데이터 파일을 잘라내려면 대신 DBCC SHRINKFILE
을 사용하세요. 자세한 내용은 DBCC SHRINKFILE을 참조하세요.
=> 데이터를 정렬하지 않고 뒤의 남은 부분을 축소 , 파일 크기에 영향을 미친다.
그래서 데이터베이스를 정리할 때는
DBCC SHRINKDATABASE ( DATABASE명 , NOTRUNCATE ) ->
DBCC SHRINKDATABASE ( DATABASE명 , TRUNCATEONLY )
같이 순차적으로 하거나
DBCC SHRINKDATABASE ( DATABASE명)
옵션을 빼고 하면 [ NOTRUNCATE -> TRUNCATEONLY ] { 위의 진행이 같이 일어난다 }
데이터베이스가 정렬되고 축소된다.
1.데이터베이스 정리/축소전
2. SHRINKDATABSE ( DATABASE명 , NOTRUNCATE ) -> mdf 영향을 미치지 않고 ldf 만 영향 ( 23GB -> 32분 소요)
3. SHRINKDATABSE ( DATABASE명 , TRUNCATEONLY )