2010-12-09 4 views
6

InnoDB 엔진이있는 MySQL에 여러 데이터베이스가 있습니다. 함께 사용하면 파일 시스템에 약 30GB 크기가 있습니다. 며칠 전 필자는 데이터베이스에서 많은 데이터를 제거했지만 (10-15 GB) 파일 시스템의 사용 된 공간은 동일하며 information_schema에서 data_length 및 index_length를 읽는 것이 거의 비슷합니다.InnoDB 데이터베이스에 필요한 디스크 공간을 계산하는 방법은 무엇입니까?

3,3GB 데이터베이스를 덤프하고 내 워크 스테이션에서 1,1GB (예 : 1 : 1 사본) 만 가져 왔습니다. 그렇다면 InnoDB 데이터베이스를 새로운 시스템으로 다시 가져 오려면 어떻게해야합니까?

답변

3

많은 양의 데이터를 삭제 한 후 테이블을 최적화하십시오. http://dev.mysql.com/doc/refman/5.1/en/optimize-table.html

+0

InnoDB에 도움이되지 않습니다. –

+0

매뉴얼에서 :'InnoDB 테이블의 경우, OPTIMIZE TABLE은 ALTER TABLE에 맵핑되며, 테이블을 재 작성하여 인덱스 통계를 갱신하고 클러스터 된 인덱스에서 사용하지 않는 공간을 비 웁니다. ' – Mchl

+0

미안하지만, 나는 분명히해야만 했어. 그것은 그 의미에서 "작동"합니다. 하지만 그것은 대부분의 공간을 무료로하지 않습니다 - 내 대답에 링크를 참조하십시오. 몇 가지 기능 요청/버그 보고서가 있지만 수년 동안 알려진 문제였으며 아직 해결 방법이 없습니다. –

3

InnoDB는 디스크 공간을 확보하지 않습니다. 피타 야. 기본적으로 데이터베이스를 삭제하고 우연히 발견 한대로 백업에서 복원하여 해제 할 수 있습니다 (here for examples 참조).

따라서 백업을 복원 한 후에 데이터베이스의 크기를 계산할 수 없습니다. 그러나은 백업되지 않은 백업 버전에 삭제 된 데이터의 공간이 여전히 있고 복원 된 백업이 이 아니기 때문에에 해당 공간이 있으므로 백업되지 않은 것보다 클 수 없습니다.

이것은 테이블 당 파일 옵션을 사용하여 어느 정도 해결할 수 있습니다. 이 게시물의 첫 번째 링크에 자세한 내용이 있습니다.

관련 문제