mysql数据删除与磁盘空间释放
一、立即释放磁盘空间
以下操作会在删除数据后立即释放磁盘空间:
- drop table table_name
- truncate table table_name
- delete from table_name (MyISAM )
二、不立即释放磁盘空间
以下操作删除数据后不立即释放磁盘空间:
- delete from table_name where xxx
- delete from table_name (InnoDB)
三、强制释放磁盘空间
delete from table_name (InnoDB) 只是将删除的数据标记为已删除,并不真正释放所占用的磁盘空间,这是mysql的bug: mysql bug;想delete操作后立即释放磁盘空间,还要看mysql数据库的配置:
- innodb_file_per_table=off (默认配置)
所有数据都保存在ibdata中,磁盘空间只能通过备份/还原数据库来释放; - innodb_file_per_table=on
delete操作后可以通过执行optimize table table_name释放空间
参考文章
http://blog.csdn.net/seven_3306/article/details/30254299
https://www.percona.com/blog/2013/09/25/how-to-reclaim-space-in-innodb-when-innodb_file_per_table-is-on/
https://dev.mysql.com/doc/refman/5.5/en/innodb-truncate-table-reclaim-space.html