mysql delete 数据之后 .MYD文件大小没有发生变化
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了mysql delete 数据之后 .MYD文件大小没有发生变化,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1568字,纯文字阅读大概需要3分钟。
内容图文
![mysql delete 数据之后 .MYD文件大小没有发生变化](/upload/InfoBanner/zyjiaocheng/871/6c840e702e264b228dcb658f85e5d87e.jpg)
介绍:
delete只是将数据标识为删除,并没有整理数据文件,当插入新数据后,会再次使用这些被置为删除标识的记录空间。(当DELETE后面跟条件的时候 是这种情况,不跟条件直接delete的时候,则不会有这种情况)如
delete from table_name和delete from table_name where 不带条件的语句清空了表,myd文件大小为0;但是带条件的删除了整个表以后,myd和文件的大小不变。举个例子,100个程序员辞职走了,但是公司100个职位还在,没有撤销,需要等新的程序员进来蹲这些坑,但是呢,招到一个合适程序员需要时间,大多数时间,这个位置就空在那里了。文件大小没变原因,这是因为删除操作后在数据文件中留下碎片所致,当你删除数据 时,mysql并不会回收被已删除数据的占据的存储空间,以及索引位。
解决办法:
1.扩充单表容量
先查看表的状态:show table status like 'table_name',然后修改表的容量:alter table_name max_rows=2000000000000,avg_low_length=500000。
如图:
2.释放表空间
执行 SHOW TABLE STATUS
返回的记录中有一个 Date_free 字段.它显示的是 MyISAM 的表浪费空间.
如图:
上图所示,我是删除了80%的历史日志,但是myd文件大小没有变化,如下图:
使用 OPTIMIZE TABLE 指令可以优化它.
OPTIMIZE TABLE 是指对表进行优化。如果已经删除了表的一大部分数据,或者如果已经对含有可变长度行的表(含有 VARCHAR 、 BLOB 或 TEXT 列的表)进行了很多更改,就应该使用 OPTIMIZE TABLE 命令来进行表优化。这个命令可以将表中的空间碎片进行合并,并且可以消除由于删除或者更新造成的空间浪费 。OPTIMIZE TABLE 命令只对 MyISAM 、 BDB 和 InnoDB 表起作用 。表优化的工作可以每周或者每月定期执行,对提高表的访问效率有一定的好处,但是需要注意的是,优化表期间会锁定表,所以一定要安排在空闲时段进行。
执行:
OPTIMIZE TABLE table_name;
成功以后,data_free如图:
文件改变如图:
内容总结
以上是互联网集市为您收集整理的mysql delete 数据之后 .MYD文件大小没有发生变化全部内容,希望文章能够帮你解决mysql delete 数据之后 .MYD文件大小没有发生变化所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。