15.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)或通用表空间中的表会在表空间中留下未使用的空间块。
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




