服务器mysql数据占用磁盘空间太大,发现是某个日志表占用太大的空间了,备份日志后truncate table 磁盘空间依然没释放。

搜索资料发现mysql 在没有开启innodb_file_per_table删除数据内容后不会释放磁盘空间只是将删除数据的数据空间设置为删除标志以供继续mysql使用。

在没有开启innodb_file_per_table的情况下,所有的表数据是存储在系统表空间里也就是ibdata1文件里。

开启innodb_file_per_table后,创建新的表的表数据存储在单独的.ibd文件中,这样删除数据truncate ,drop等操作会删除该.ibd文件释放磁盘空间。

alter table,optimize table 操作 后会重新生成一个新的.ibd文件。

mysql 5.6.5及之后的版本默认开启其之前的版本默认关闭

查看配置:
show variables like '%per_table%';

开启配置:
set global innodb_file_per_table =ON;

标签: mysql, 存储优化

已有 2 条评论

  1. 虽然不知道说的是什么,但看起来好厉害的样子!

  2. 写的很好,支持一下

添加新评论