문제

SQL Server 2012 EE 계획을 개발하고 있습니다 (NVARCHAR (MAX) 필드가 불필요하게 유니 코드 NVARCHAR (MAX) 필드를 사용하지 않고 데이터베이스 크기를 최적화하여 한 번을 수행하여 데이터베이스 크기를 최적화하고자합니다. 수축. 실험에서는 11g의 데이터 인 50 % 할당 된 공간 절약을 보여줍니다.

읽기 및 실험 후 데이터베이스를 줄이는 것은 인덱스 조각화가 발생하고 인덱스를 재구성하는 것이 데이터베이스를 확장하게합니다. 진짜 catch-22 상황. 이 경우 디스크 저장소 11g 인 데이터베이스에 50 %의 여유 공간을두고 싶지 않습니다.

다음은 비 선단 인덱스와 최신 인덱스 통계로 끝나는 일을 허용하는 한 번 축소에 대한 적절한 접근법이 될 것입니다.

o 백업 및 검증 및 중복 백업 백업.

o 모든 인덱스를 삭제합니다.

o 새 테이블로 복사를 통해 너무 뚱뚱한 테이블을 다시 작성한 다음 테이블을 삭제하고 바꿉니다. 이것은 현재 잘 작동하고 있습니다.

o 합리적인 양의 여유 공간을 남기는 데이터베이스를 축소합니다.

o 삭제 된 모든 인덱스를 다시 작성합니다.

o 데이터베이스의 유효성을 검사하고 조각화를 확인하십시오.

어떤 경고, 제안, 고치 또는 대안을 가리키는 것이 많은 것을 고려해야합니다.

thx, dave

도움이 되었습니까?

해결책

간단한 복구 모델은 "로그를 끄지 않습니다."일반적으로 매우 작은 덩어리로 이러한 활동을 해결할 수 없으므로 가장 큰 재구성을 처리 할 수있을만큼 큰 로그를 사전 크기로 지정하지 않으면 그리고 복구 모델을 망쳐 놓지 마십시오.

또한, 다시는 일반적으로 데이터가 결코 가 아니라면, 일시적으로 공간을 자유롭게 해소하지 않는 한, 일시적으로 작은 이점이 있습니다 ( "합리적인 것을 의미하는지 모르겠다"라고 주어지는 것). 데이터베이스가 다시 자라는 경우에도 드라이브에 여유 공간을 남겨 둘 필요가 있습니다. 왜 그것이 다시 자랄 수있게 해주는 이유는 무엇입니까? 데이터베이스가 커질 때까지 해당 공간에 단기 대여를 제공 할 것입니까? 당신은 그냥 여유 공간 % 경고를 피하려고 노력하고 있습니까?

제안 :이 게시물을 잘 알려주세요 ...

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 dba.stackexchange
scroll top