반응형
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 서버를 재설치하거나 백업 후 복원해야 함
반응형
'mysql' 카테고리의 다른 글
Mysql 테이블 정의서 만드는 쿼리 (0) | 2025.03.04 |
---|---|
리눅스 mysql 백업 스크립트 (0) | 2025.02.13 |
MYSQL FEDERATED 사용방법 (다른 서버 디비의 테이블 조회, 연결) (0) | 2024.08.07 |
ERROR 1819 (HY000): Your password does not satisfy the current policy requirements (1) | 2023.11.21 |
phpMyAdmin 설치 방법 (2023년 9월) (0) | 2023.09.25 |