2012-06-25 3 views
1

디스크에 복사 할 충분한 공간이없는 테이블에 어리석게도 추가하려고 시도했으나이를 삭제하고 사이트 충돌을 막기 위해 내 RDS 인스턴스의 저장 용량을 확장해야했습니다. 다시 (이번에는 충분한 디스크 공간이 필요함) 다시 작업하길 원하지만 사전 쿼리 프리 스토리지 수준으로 되돌릴 수는 없습니다. 내 쿼리는 거대한 테이블과 같은 테이블을 만들고, 열을 추가 한 다음 이전 테이블의 전체 내용을 null과 함께 새 테이블에 삽입하는 것이 었습니다. CALL mysql.rds_rotate_slow_log;CALL mysql.rds_rotate_general_log;을 사용해 봤지만 내 AWS Cloudwatch 패널에서 판단 할 때 내 사전 쿼리 수준에서 ~ 10GB 가량 떨어져 있습니다. 새 테이블에 행이 삽입되지 않았습니다. "clear hdd cache"명령 또는 이와 비슷한 것이 있습니까? RDS이므로 실행중인 인스턴스에 대한 액세스 권한이 없지만 마스터 사용자와 RDS CLI 액세스 권한이 있습니다.실패한 삽입물에서 디스크 공간 회수하기

편집 : 그것은 내 문제가 거대한 ibdata 파일과 관련이있을 수 있습니다 같다하지만 난 루트 액세스 권한이 없기 때문에, 정말 How to shrink/purge ibdata1 file in MySQL

답변

2

솔루션에 언급 된 솔루션을 실행할 수 없습니다하면 드롭하는 것이 었습니다 새 테이블. select count(*) from new_table;이 0을 반환했기 때문에 새로운 테이블에 아무 것도 저장되어 있지 않다고 생각했지만 임시 데이터가 새 테이블에 묶여 있다고 생각합니다. 데이터베이스의 구조적 관점에서 이것이 정확히 어떻게 작동하는지 모르겠지만 다행스럽게도 내가 원하는 것을 수행했습니다.

결론 : 죽인 삽입물에는 여전히 저장 공간이 사용됩니다.

누군가가 이것이 왜 그런지 설명 할 수 있다면 미래에 도움이 될 것입니다.

관련 문제