mysql删除的delete怎么找回(MySQL Delete 删数据后磁盘空间未释放的原因)
mysql删除的delete怎么找回
MySQL Delete 删数据后磁盘空间未释放的原因问题描述
在 MySQL 中使用 delete 语句删除数据之后,监控视图中可用的磁盘空间没有增加,磁盘使用率没有下降等等。
解决方案
delete 不释放空间是 MySQL 自身机制的原因,需要重建表才可以释放磁盘空间,可以参考的操作:
- 执行 optimize table ${table_name}。
- 如果是 InnoDB 的表,执行 alter table ${table_name} engine = innodb。
需要注意以下两个问题:
这两个命令都会重建表,尽量不要在磁盘空间紧张(>90%)的时候进行操作,先扩容磁盘,操作完之后再缩容。
这两个命令在开始和结束的时候都会尝试获取 metadata lock,所以尽量不要在业务高峰期执行。
问题分析
在 MySQL 的机制中,delete 删除的行只是被标记为删除状态,如果删除的行很多,整个数据页(innodb_page)的行都会被删除的时候,数据页也只会标记为删除,都不会真正的物理删除,而是一直占用,等待被复用。
例如:
可以看到 delete 前后,data_length 并没有发生变化,但是 data_free 增加了很多。这说明数据虽然删了,但是并没有被释放,仍旧被 test1 表占用,只是显示处于 free 状态,以后再写入新数据的时候就可以直接复用,而不需要在申请新的磁盘空间了。
这个时候使用alter table test1 engine = innodb
看看效果:
可以看到 data_length 和 data_free 都变成了空表的状态,仅有一个 innodb_page (默认 16k)。
PS:data_free 本身也可以用来评估表的空间碎片,当这个数字非常高的时候,可以考虑用同样的方法重建表,回收一部分磁盘空间。
以上就是MySQL Delete 删数据后磁盘空间未释放的原因的详细内容,更多关于MySQL 删数据后磁盘空间未释放的资料请关注开心学习网其它相关文章!
- mysql 索引举例(MySQL 各个索引的使用详解)
- mysql常用优化方法(理解MySQL查询优化处理过程)
- mysql 索引使用总结(MySQL复合索引的深入探究)
- mysql 命令与sqlserver的区别大么(MySQL系列之执行SQL 语句时发生了什么?)
- mysql中length、char_length区别
- mysql的sql语句优化5种方式(MySQL:五个常见优化SQL的技巧)
- mysql dateformat(MySQL的DATE_FORMAT函数的使用)
- mysql各种锁详解(MySQL 查看事务和锁情况的常用语句分享)
- mysql存储引擎的创建与修改(关于MySQL Memory存储引擎的相关知识)
- MySQL中查询数据库的大小
- mysql乐观锁一定比悲观锁性能高(mysql居然还能实现分布式锁的方法)
- mac版本php环境搭建(在Mac OS X中配置Apache+PHP+MySQL运行环境的详细步骤)
- 如何清除mysql的binlog
- mysql标签的用法(mysql 的indexof函数用法说明)
- mysql数据类型
- mysql日期与时间函数(MySQL日期函数与时间函数汇总MySQL 5.X)
- 给孩子选购保温杯,注意这4个步骤,比颜值更重要(给孩子选购保温杯)
- 保温好 容量大 颜值高 保温杯你给娃娃买对了吗(保温好容量大颜值高)
- 《道德经》 人生避开骄狂,才能免去祸患(道德经人生避开骄狂)
- 郭麒麟(郭麒麟)
- 古人十句 戒骄 名言,醍醐灌顶,受益匪浅(古人十句戒骄名言)
- 《道德经》:功成不局,泰而不骄(道德经:功成不局)
热门推荐
- mysql常用的sql语句大全(mysql建表常用的sql语句汇总)
- centos安装php5.6(Centos7 Yum安装PHP7.2流程教程详解)
- mysql一般使用的事务隔离级别(详解MySQL中事务隔离级别的实现原理)
- JavaScript 阻止超链接跳转的操作方法(多种写法)(JavaScript 阻止超链接跳转的操作方法多种写法)
- appui代码(AmazeUI 图标的示例代码)
- sql server 2000数据库管理(SQL Server 2000/2005/2008删除或压缩数据库日志的方法)
- php设计模式如何实现(php模式设计之观察者模式应用实例分析)
- docker容器启动后秒退(解决docker run 或者 docker restart 启动镜像就自动退出)
- python中的1和0(python把1变成01的步骤总结)
- php项目开发实例(php项目中类的自动加载实例讲解)