Loading...
MySQL 9.5 Reference Manual 9.5의 17.11.5 Reclaiming Disk Space with TRUNCATE TABLE의 한국어 번역본입니다.
아래의 경우에 피드백에서 신고해주신다면 반영하겠습니다.
감사합니다 :)
InnoDB 테이블을
truncate
할 때 운영 체제의 디스크 공간을 회수하려면, 해당 테이블이 자체 .ibd 파일에 저장되어 있어야 합니다. 테이블을 자체 .ibd 파일에 저장하려면, 테이블이 생성될 때 innodb_file_per_table이 활성화되어 있어야 합니다. 추가로, truncate 중인 테이블과 다른 테이블 사이에
foreign key 제약이 존재해서는 안 합니다. 그렇지 않으면
TRUNCATE TABLE 작업이 실패합니다. 그러나 동일한 테이블 내 두 컬럼 사이의 foreign key 제약은 허용됩니다.
테이블이 truncate되면, 해당 테이블은 삭제된 후 새로운 .ibd 파일로 다시 생성되며, 해제된 공간은 운영 체제로 반환됩니다. 이는 InnoDB system tablespace
(innodb_file_per_table=OFF 상태에서 생성된 테이블) 내에 저장된 InnoDB 테이블과 공유
general tablespaces에 저장된 테이블을 truncate하는 경우와는 다릅니다. 후자의 경우, 테이블이 truncate된 뒤에 해제된 공간은 InnoDB만 사용할 수 있습니다.
테이블을 truncate하여 디스크 공간을 운영 체제로 반환할 수 있다는 점은
physical backups의 크기도 더 작아질 수 있음을 의미합니다. system tablespace(innodb_file_per_table=OFF 상태에서 생성된 테이블)나 general tablespace에 저장된 테이블을 truncate하면, 해당 tablespace 안에 사용되지 않는 공간 블록들이 남습니다.
17.11.4 Defragmenting a Table
17.12 InnoDB and Online DDL