MySQL의 명령어를 공부해본 사람이라면, DROP과 TRUNCATE, DELETE 명령어의 차이를 들어보았을 것이다.
간단하게 이야기를 하자면, DELETE 명령어는 원하는 데이터를 지울 수 있고, 삭제 후 잘못 삭제한 것을 되돌릴 수 있다.
TRUNCATE 명령어는 테이블은 삭제하지는 않고, 데이터만 삭제한다. 삭제 후 절대 되돌릴 수 없다.
DROP 명령어는 테이블 전체를 삭제한다. 삭제 후 절대 되돌릴 수 없다.
그럼 DROP 명령어는 어떻게 작동하길래, 테이블이 통채로 사라질까?
MySQL의 innoDB에서는 테이블을 .ibd 파일로 저장한다.
DROP시 .ibd 파일이 어떻게 되는지 살펴보자.
mysql> CREATE DATABASE test_db;
Query OK, 1 row affected (0.01 sec)
mysql> INSERT INTO test_table (id, name) VALUES (1, 'example');
Query OK, 1 row affected (0.01 sec)
가상의 test_db를 만들고 테이블을 생성한 뒤 값을 삽입했다.
우선 TRUNCATE 이후 .ibd 파일이 존재하는지 살펴보자.
mysql> TRUNCATE TABLE test_table;
Query OK, 0 rows affected (0.01 sec)
$ ls -l {---}/mysql/data/test_db/test_table.ibd
-rw-r----- 1 mysql mysql 98304 Nov 12 12:00 /usr/local/mysql/data/test_db/test_table.ibd
TRUNCATE 명령어는 .ibd 파일이 그대로 존재한다.
DROP 명령어 이후 .ibd 파일이 존재하는지 살펴보면,
mysql> DROP TABLE test_table;
Query OK, 0 rows affected (0.01 sec)
$ ls -l {---}/mysql/data/test_db/test_table.ibd
ls: /usr/local/mysql/data/test_db/test_table.ibd: No such file or directory
.ibd 파일이 삭제된 것을 알 수 있다.
DROP 명령어는 .ibd 파일이 삭제해 테이블을 통채로 날리는 것을 알 수 있다.
'Backend > MySQL' 카테고리의 다른 글
TS로 아주아주 간단한 MySQL 만들어보기 (0) | 2024.10.17 |
---|---|
[MySQL] DB의 인덱스로 B+트리를 사용하는 이유 (0) | 2024.09.28 |
[MySQL] MySQL 아키텍처를 간단히 살펴보기 (0) | 2024.08.10 |