drop table table_name立刻释放磁盘空间 , Innodb和MyISAM;
truncate table table_name 立刻释放磁盘空间, Innodb和MyISAM,truncate table其实有点类似于drop table 然后create;
delete from table_name 不会释放磁盘空间, Innodb和MyISAM, 新insert的数据会插入到原来的位置,比如删除100万数据后,数据文件不会变小,重新插入一百万数据后,数据文件不会变大。
可以在删除掉数据后执行下面语句,会立刻释放磁盘空间,但该操作会锁定表结构
optimize table table_name
查看表占用硬盘空间大小的SQL语句如下:(默认用M做展示单位)
SELECTTABLE_NAME,( DATA_LENGTH + INDEX_LENGTH )/ 1048576 AS size_Mb,TABLE_ROWS FROMinformation_schema.TABLES WHERETABLE_SCHEMA = 'db_name' AND TABLE_NAME = 'table_name'
还可以执行:
alter table tab_name ENGINE = 'InnoDB';
注意:该操作执行的时候会把该表格先写入一个tmp临时表,所以磁盘剩余空间必须大于表空间,否则会执行失败。