文档首页
MySQL 8.4 参考手册
相关文档 下载此手册
PDF (US Ltr) - 39.9Mb
PDF (A4) - 40.0Mb
手册页 (TGZ) - 258.5Kb
手册页 (Zip) - 365.5Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


MySQL 8.4 参考手册  /  ...  /  使用 TRUNCATE TABLE 重新获取磁盘空间

17.11.5 使用 TRUNCATE TABLE 重新获取磁盘空间

要重新获取操作系统磁盘空间,当截断一个InnoDB表时,该表必须存储在它自己的.ibd文件中。为了将表存储在它自己的.ibd文件中,innodb_file_per_table必须在创建表时启用。此外,在要截断的表和其他表之间不能存在外键约束,否则TRUNCATE TABLE操作将失败。但是,允许在同一表中的两个列之间存在外键约束。

当截断表时,它将被删除并在新的.ibd文件中重新创建,并且释放的空间将返回给操作系统。这与截断存储在InnoDB系统表空间中的InnoDB表(在innodb_file_per_table=OFF时创建的表)和存储在共享通用表空间中的表形成对比,在这些表中,只有InnoDB可以在表被截断后使用释放的空间。

能够截断表并将磁盘空间返回给操作系统也意味着物理备份可以更小。截断存储在系统表空间中(在innodb_file_per_table=OFF时创建的表)或通用表空间中的表,将在表空间中留下未使用空间的块。