2009-06-01 2 views
0

최근에 내 응용 프로그램 테이블에서 제거를 수행합니다. 디스크 공간이 11.12GB 인 총 기록은 1.1 백만입니다.제거 된 테이블에서 테이블 크기가 줄어들지 않습니다.

필자는 860k 개의 레코드를 삭제했으며 290k 개의 레코드를 유지했지만 왜 내 공간이 11.09GB로 감소 했습니까?

보고서 - 디스크 사용량 - 데이터 파일에 사용되는 디스크 공간 - 사용 된 공간에 대한 세부 정보를 모니터링합니다.

내가 perfrom 데이터 파일을 축소해야합니까? 이것은 오랫동안 퍼즐이었습니다.

+0

플랫폼은 무엇입니까? 어느 OS? 어떤 데이터베이스 엔진? MySQL은? SQL Server? 다른 것? 그리고 네, 대부분의 데이터베이스 엔진은 압축 단계를 실행할 때까지 OS에 여유 공간을 확보하지 않습니다. –

+0

Windows 2003. 클러스터 환경에서 실행되는 SQL Server 2005. 2 db 인스턴스가 있습니다. db 내가 레코드를 제거한 후 사용되는 상당한 공간을 줄입니다. 퍼지를 수행 한 후에 DB B에 대해서도 마찬가지입니다. 나에게 사용되는 디스크 공간의 개선을 제공하지 않습니다. 다림질 단계의 의미는 무엇입니까? –

답변

1

데이터 파일을 축소 할 일부 작업 (데이터베이스 관리 시스템에만 해당)을 명시 적으로 호출해야합니다. 데이터베이스 엔진은 레코드를 삭제할 때 파일을 축소하지 않습니다. 이는 최적화를위한 것입니다. 축소하는 것은 시간 소모적입니다.

+0

db가 실행되는 동안 데이터 파일을 축소 할 수 있습니까? db는 약 11GB입니다. 그것은 긴축 할 시간이 오래 걸릴 것입니까? –

+0

잘 모르겠다. 사용하는 데이터베이스 소프트웨어의 설명서를 참조하십시오. – sharptooth

0

썬더 버드의 메일 폴더와 비슷하다고 생각합니다. 삭제 한 메일은 삭제 된 것으로 표시되지만 성능이 향상되기 위해서는 해당 공간이 해제되지 않습니다. 따라서 대부분의 11.09GB에는 이전 데이터 또는 0이 포함됩니다. 축소 데이터 파일은 남아있는 실제 데이터 만 포함하는 새 파일을 만들어이 파일을 "압축"(또는 "정리")합니다.

0

아마 테이블을 축소해야합니다. 나는 SQL 서버가 기본적으로 당신을 위해 그것을하지 않는다는 것을 안다. 나는 이것이 성능상의 이유라고 추측한다. 아마 다른 DB도 같을 것이다.

3

MS SQL Server의 경우 클러스터 된 인덱스를 다시 작성하십시오.

삭제 된 행만 있습니다. 재개되지 않은 공간입니다. (디스크 공간 보고서는 SSMS에 있기 때문에 그것의 MS SQL)

DBCC DBREINDEX 또는 ALTER INDEX ... WITH REBUILD적인 버전에 따라

+0

ALTER INDEX ... REBUILD WITH SQL Server 2005 이상을 선호합니다. –

+0

True이면 DBREINDEX는 더 이상 사용하지 않을 것입니다.하지만 모든베이스를 덮고 있습니다 ... – gbn

+1

와우, 색인을 다시 작성하면 테이블 정리 공간이 600MB에서 200KB로 크게 줄어 듭니다. 이것은 사용 된 명령입니다. ALTER TABLE

REBUILD; –

관련 문제