이메일 아카이빙에 사용되는 SQL Server 인스턴스가 있습니다 (타사 아카이빙 패키지 제공). 소프트웨어는 빈 데이터베이스로 롤오버됩니다. 우리는 과거에이 분기를 수행했지만 지금은 매월 수행하려고합니다. 아카이브되는 데이터의 양은 한 달에 약 15-20GB이며 대부분의 데이터는 소수의 테이블 (보통 2-4)에만 있습니다.
새 데이터베이스로 롤오버하면 이전 데이터베이스는 읽기 전용으로 사용됩니다. 내가하고 싶은 것은 모든 테이블 / 인덱스가 인접하고 매우 높은 채우기 비율을 가지며 데이터 파일 끝에 빈 공간이 많지 않은 훌륭하고 단단한 데이터 파일로 최적화하는 것입니다. 또한이 서버에서 Standard Edition을 사용하고 있으며 모든 제한이 있습니다 (그렇지 않으면 데이터 압축을 이미 사용하고 있음).
내가 생각할 수있는 몇 가지 가능성 :
- DBCC SHRINKFILE 인덱스를 재 구축 / 재구성합니다. (이는 DBCC SHRINKFILE이 닿는 모든 것에서 오줌을 조각 내지 만 완전성을 위해 포함시키기 때문에 합리적인 옵션은 아닙니다.)
- 자동 통계를 끈 상태에서 새 데이터베이스를 만듭니다. 소스 데이터베이스에서 모든 테이블을 스크립트하고 다시 작성하십시오. bcp를 사용하여 클러스터 키 순서로 새 데이터베이스로 데이터를 내보내거나 가져옵니다. 모든 인덱스를 스크립팅하고 다시 작성하십시오. 전체 스캔으로 모든 통계를 다시 계산하십시오.
- 자동 통계를 끈 상태에서 새 데이터베이스를 만듭니다. 소스 데이터베이스에서 모든 테이블을 스크립트하고 다시 작성하십시오. SSIS 또는 T-SQL을 사용하여 데이터를 새 데이터베이스로 전송하십시오. 모든 인덱스를 스크립팅하고 다시 작성하십시오. 전체 스캔으로 모든 통계를 다시 계산하십시오.
모든 경우의 마지막 단계는 데이터베이스를 읽기 전용 모드로 설정하는 것입니다.
다른 좋은 / 더 나은 옵션이 있습니까? 내 관심사는 높은 채우기 비율을 유지하고 논리적으로 연속적인 방식으로 데이터를 옮기는 것입니다.
편집하다:
데이터의 약 75 %가 이미지 (LOB) 열에 저장되어있는 것 같습니다.
PRIMARY
입니까?