mysql

mysql 데이터 삭제해도 디스크가 그대로 일 경우 해결책

은둔한량 2025. 3. 14. 15:53
반응형

MySQL에서 테이블의 컬럼을 삭제해도 실제로 디스크 공간이 즉시 줄어들지 않는 이유는 MySQL의 저장 엔진이 기존 데이터 파일을 그대로 유지하기 때문이야. 용량을 실제 크기로 줄이려면 테이블을 최적화하거나 재구성해야 한다.

이때 해결하는 방법 

1. OPTIMIZE TABLE 사용 (InnoDB, MyISAM) 

OPTIMIZE TABLE your_table;

 

2. ALTER TABLE을 사용하여 테이블 재구성

ALTER TABLE your_table FORCE;

 

3. 테이블을 새로 생성 후 데이터 이동 (확실한 방법)

컬럼 삭제 후에도 OPTIMIZE TABLE이 효과가 없는 경우, 테이블을 새로 만들고 데이터를 복사한 뒤 기존 테이블을 교체하면 된다.

CREATE TABLE new_table LIKE your_table;
ALTER TABLE new_table DROP COLUMN your_deleted_column;
INSERT INTO new_table SELECT * FROM your_table;
RENAME TABLE your_table TO old_table, new_table TO your_table;
DROP TABLE old_table;

 

어떤 방법을 쓰든 백업을 먼저 해두는 것을 추천 !!

 

MySQL 설정 확인 (innodb_file_per_table)

만약 InnoDB를 사용 중이라면, 테이블의 공간이 ibdata1 파일에 그대로 남아 있을 가능성이 있습니다.
이런 경우에는 innodb_file_per_table 설정을 확인

SHOW VARIABLES LIKE 'innodb_file_per_table';

 

 

- ON이면 ALTER TABLE ... FORCE가 효과가 있을 가능성이 높음
- OFF이면 InnoDB 시스템 테이블스페이스(ibdata1)에 저장되므로, 공간을 줄이려면 MySQL 서버를 재설치하거나 백업 후 복원해야 함

반응형