Documentation Home
MySQL 8.4 Reference Manual
Related Documentation Download this Manual
PDF (US Ltr) - 39.8Mb
PDF (A4) - 39.9Mb
Man Pages (TGZ) - 257.9Kb
Man Pages (Zip) - 364.9Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


MySQL 8.4 Reference Manual  /  ...  /  Reclaiming Disk Space with TRUNCATE TABLE

17.11.5 使用 TRUNCATE TABLE 回收磁盘空间

当使用TRUNCATE语句回收InnoDB表的磁盘空间时,表必须存储在自己的.ibd文件中。为使表存储在自己的.ibd文件中,innodb_file_per_table必须在创建表时启用。此外,还不能存在外键约束,否则TRUNCATE TABLE操作将失败。然而,在同一张表中两个列之间的外键约束是允许的。

当表被截断时,它将被删除并在新的.ibd文件中重新创建,并且释放的空间将返回给操作系统。这与存储在InnoDB 系统表空间(innodb_file_per_table=OFF)中的表和共享general 表空间中的表不同,在这些情况下,仅InnoDB可以使用截断后释放的空间。

可以截断表并将磁盘空间返回给操作系统,这也意味着物理备份可以更小。截断存储在系统表空间(当innodb_file_per_table=OFF时创建的表)或一般表空间中的表,会留下表空间中的空闲块。