MySQL删除数据后,释放磁盘空间

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做展示单位)

SELECT
	TABLE_NAME,
	( DATA_LENGTH + INDEX_LENGTH )/ 1048576 AS size_Mb,
	TABLE_ROWS 
FROM
	information_schema.TABLES 
WHERE
	TABLE_SCHEMA = 'db_name' 
	AND TABLE_NAME = 'table_name'

还可以执行:

alter table tab_name  ENGINE = 'InnoDB';

注意:该操作执行的时候会把该表格先写入一个tmp临时表,所以磁盘剩余空间必须大于表空间,否则会执行失败。

猜你喜欢

转载自blog.csdn.net/weixin_38959210/article/details/126079737
今日推荐