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 删数据后磁盘空间未释放的资料请关注开心学习网其它相关文章!
- navicatformysql使用视图(Navicat for MySQL的使用教程详解)
- mysql带log的版本(聊聊MYSQL中Redo Log是什么?)
- MySQL自定义函数
- mysql 查询json(MySQL处理JSON常见函数的使用)
- mysql数据库与表的基本操作总结(Mysql、Oracle中常用的多表修改语句总结)
- mysql8.0安装教程win10(Windows10下mysql 8.0.22 安装配置方法图文教程)
- mysql中mergeinto的用法(MySQL中exists、in及any的基本用法)
- mysql查看执行计划
- mysql索引的比较规则(MySQL的Flush-List和脏页的落盘机制)
- mysql插入数据错误代码(教你解决往mysql数据库中存入汉字报错的方法)
- java实现数据库备份(MySQL基于java实现备份表操作)
- win10安装mysql8.0如何启动(win10下mysql 8.0.23 安装配置方法图文教程)
- MySQL SQL Assistant智能提示
- mysql获取当前日期时间(MySQL DATEDIFF函数获取两个日期的时间间隔的方法)
- phpmysql完全学习手册教程(Windows下搭建PHP开发环境Apache+PHP+MySQL)
- mysql清空数据库所有表格(MySQL用truncate命令快速清空一个数据库中的所有表)
- 一道高中题-求杯子的高度(一道高中题-求杯子的高度)
- 网坛停摆三巨头亏损惨重,费德勒跌幅88 纳达少赚2400万(网坛停摆三巨头亏损惨重)
- Beyond 版本《无人深空》主线任务攻略 阿特拉斯之道(版本无人深空主线任务攻略)
- 全球科技界最有钱大佬TOP 15 你知道几位(全球科技界最有钱大佬TOP)
- 2主力后腰缺阵 泰山队奇兵有望获重用,赛季0出场,迎来中超首秀(泰山队奇兵有望获重用)
- 三分71 生死战爆发 篮网旧将丁威迪今天成奇兵,助队赢球(三分71生死战爆发)
热门推荐
- css水平或者垂直居中的写法(深入理解CSS行高line-height与文本垂直居中的原理)
- thinkphp框架案例(thinkphp5.1框架容器与依赖注入实例分析)
- mysql的视图和临时表区别(MySQL 内存表和临时表的用法详解)
- nginx结构图解(详解Nginx 工作原理)
- jquery next()
- IIS假死的原因
- 数据库sqlserver定时任务(SQL Server 2005作业设置定时任务)
- sqlserver的图形表(SQL Server纵表与横表相互转换的方法)
- 阿里云ecs 获取公网ip(阿里云ECS云服务器未添加安全组规则设置导致通过公网IP地址不能访问)
- Jquery中parent()和parents()
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9