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