我有一个150 GB的MYSQL表(innodb),目前没有使用。我有点像磁盘,所以我需要截断表并回收空间。 innodb_file_per_tble开启了。表截断从过去一小时开始,但仍未截断。没有外键检查,只有 3 或 4 个索引。检查显示进程列表后,它显示状态更新。需要一些提示和帮助什么是最好的方法(截断/删除)。mysql 试图在内部做什么?表大小 150gb.space 保留在机器 35gb。您的帮助将不胜感激。
对于5.0.3之前的InnoDB表,InnoDB通过逐个删除行来处理TRUNCATE TABLE。从MySQL 5.0.3开始,仅当存在引用表的任何外键约束时,才使用逐行删除。如果没有外键约束,InnoDB 会通过删除原始表并创建一个具有相同定义的空表来执行快速截断,这比逐个删除行要快得多。(使用快速截断时,它会将任何AUTO_INCREMENT计数器重置为零。从MySQL 5.0.13开始,无论是否存在外键约束,TRUNCATE TABLE都将AUTO_INCREMENT计数器重置为零。
看看这个:http://dev.mysql.com/doc/refman/5.0/en/truncate-table.html