承接国内外服务器租用托管、定制开发、网站代运营、网站seo优化托管接单、网站代更新,新老站点皆可!!咨询QQ:3787320601

数据库恢复之:MySQL delete删除数据后释放磁盘空间的操作方法

管理员 2023-08-24 08:15:00 互联网圈 0 ℃ 0 评论 2809字 收藏

数据库恢复之:MySQL delete删除数据后释放磁盘空间的操作方法

当 MySQL 数据库服务删除部份数据后;有些情况下这些数据占用的存储空间会释放掉,有些情况这些存储空间则不会释放。以下是对这类情况的简单说明:

一、删除表|清空数据表

当履行删除数据表清空数据表的全部数据操作时,都会释放掉相应的磁盘存储空间

drop table table_name;
truncate table table_name;

在MyISAM和InnoDB(innodb_file_per_table)存储引擎中,数据信息存在在单个文件中。删除表操作和清空数据表操作都会释放空间。

二、删除表数据

delete from table_name [where xxx];

使用delete删除的时候,MySQL并没有把数据文件删除,而是将数据文件的标识位删除,没有整理文件,因此不会完全释放空间。被删除的数据将会被保存在一个链接清单中,当有新数据写入的时候,MySQL会利用这些已删除的空间再写入。即,删除操作会带来一些数据碎片,正是这些碎片在占用硬盘空间

三、优化表空间

方法一:

optimize table table_name ;

当表数据被大量删除后,释放占用的空间就变得很有必要了。会明显的提高查询速度。使用 optimize table。被删除的记录被保持在链接清单中,后续的 insert 操作会重新使用旧的记录位置。您可使用 optimize table 来重新利用未使用的空间,并整理数据文件的碎片。optimize 适用于InnoDB和MyISAM存储引擎。

查看表占用硬盘空间大小的SQL语句以下:(默许用M做展现单位)

SELECT TABLE_NAME, (DATA_LENGTH+INDEX_LENGTH)/1048576 as size_Mb, TABLE_ROWS FROM information_schema.tables WHERE TABLE_SCHEMA=’wow_tencent_1′ AND TABLE_NAME=’user’

方法二:

alter table tab_name ENGINE = ‘InnoDB’;

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

方法三:
先将全部表的结构和数据导出来,删除全部表,再创建表,最后导入数据。生产环境不建议用这个方法

到此这篇关于MySQL delete删除数据后,释放磁盘空间的文章就介绍到这了,更多相关MySQL delete释放空间内容请搜索之前的文章或继续浏览下面的相关文章希望大家以后多多支持!

文章来源:丸子建站

文章标题:数据库恢复之:MySQL delete删除数据后释放磁盘空间的操作方法

https://www.wanzijz.com/view/73971.html

相关文章

Related articles

X

截屏,微信识别二维码

微信号:weimawl

(点击微信号复制,添加好友)

打开微信