현재 사용하지 않는 150GB의 MYSQL 테이블 (innodb)이 있습니다. 나는 디스크의 일종이므로 테이블을 자르고 공간을 되 찾을 필요가있다. innodb_file_per_tble이 켜져 있습니다. 지난 1 시간 동안 테이블 잘림이 진행 중이지만 여전히 잘리지 않았습니다. 외래 키 확인은 3 ~ 4 개의 인덱스 만 있습니다. show processlist를 확인한 후 상태 업데이트를 표시합니다. 몇 가지 팁이 필요하고 최선의 방법이 무엇인지 (자르기/놓기)하는 데 도움이됩니다. mysql은 내부적으로 무엇을하려고 했는가? 테이블 크기 150gb. 공간 - 기계 35gb. 귀하의 도움을 진심으로 감사드립니다.MySQL 자르기 테이블에 관한 도움이 필요
답변
버전 5.0.3 이전의 InnoDB 테이블의 경우 InnoDB는 행을 하나씩 삭제하여 TRUNCATE TABLE을 처리한다. MySQL 5.0.3부터 행 단위 삭제는 테이블을 참조하는 FOREIGN KEY 제약 조건이있는 경우에만 사용됩니다. FOREIGN KEY 제약이없는 경우, InnoDB는, 원의 테이블을 삭제 해, 같은 정의의 빈 테이블을 작성하는 것으로 써, 고속의 잘라 버림을 실행합니다. 이것은 행을 하나씩 삭제하는 것보다 훨씬 빠릅니다. (빠른 자르기가 사용되면, AUTO_INCREMENT 카운터는 0으로 초기화되고, MySQL 5.0.13부터는 외래 키 제약 조건에 관계없이 TRUNCATE TABLE에 의해 AUTO_INCREMENT 카운터가 0으로 재설정됩니다.)
out : http://dev.mysql.com/doc/refman/5.0/en/truncate-table.html
지금 사용하고있는 버전은 5.1.66-log이고 테이블에는 고유 한 .ibd file.so가 있습니다. 나는 참을성이있어 잘린 프로세스를 마칠 때까지 기다릴 수 있습니까? remaning 35 기가 바이트에 어떤 영향도 없습니다. –
인내심을 갖고 작업이 완료 될 때까지 기다리십시오. 많은 양의 데이터가있는 경우 기존 RDBMS보다 NoSQL을 사용하십시오. – Reza
다음은 유용 할 수 있습니다. [3456159/how-to-shrink-purge-ibdata1-file-in-mysql] (https://stackoverflow.com/questions/3456159/how-to-shrink- mysql-innodb-release-disk-after-delete-data-rows-from-table] (https://stackoverflow.com/questions/1270944)를 참조하십시오./mysql-innodb-release-disk-after-delete-data-rows-from-table)와 : [MySql : TRUNCATE TABLE으로 디스크 공간 재생] (https://dev.mysql.com/doc/ refman/5.6/ko/innodb-truncate-table-reclaim- space.html) –