您正在使用IPV4(18.205.176.39)访问本站 您本次共访问本站 1 次
 用户名: 密 码: 验证码:     用QQ登录本站
首页 软件 编程 笑话 知识 公告 台风 日历 计算器
深圳小产权房       [公益]文明驾车我带头,文明行路我带头,礼貌让座我带头      

【腾讯云】热门云产品首单特惠秒杀,2核2G云服务器45元/年      
[公益] 节省一分零钱 献出一份爱心 温暖世间真情      
2022年 儿童节 15
2022年 端午节 17
2023年 元 旦 229
2023年 春 节 250
 
本类新增
本类热门文章
您现在的位置:首页 >> 数据库 >> 内容
MySQL delete删除数据后释放磁盘空间的操作方法
内容摘要: 一、删除表|清空数据表当执行删除数据表或者清空数据表的全部数据操作时,都会释放掉相应的磁盘存储空间。droptabletable_name;truncatetabletable_name;在MyISAM和InnoDB(innodb_file_per_table)存储引擎中,数据信息存在在单个文件中。删除表操作和清空数据表操作都会释放空间。二、删除表数据del......
一、删除表|清空数据表

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

droptabletable_name;

truncatetabletable_name;

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

二、删除表数据

deletefromtable_name[wherexxx];

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

三、优化表空间

方法一:

optimizetabletable_name;

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

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

SELECTTABLE_NAME,(DATA_LENGTH+INDEX_LENGTH)/1048576assize_Mb,TABLE_ROWSFROMinformation_schema.tablesWHERETABLE_SCHEMA='wow_tencent_1'ANDTABLE_NAME='user'

方法二:

altertabletab_nameENGINE='InnoDB';

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

方法三:

先将整个表的结构和数据导出来,删除整个表,再创建表,最后导入数据。

上一篇:MYSQL字符串函数 下一篇:MySQL防止delete命令删除数据的
发布日期:2022/5/7
手机扫二维码直达本页
发布时间:12:59:23
点击:186
录入:齐天大圣
相关文章
Baidu

YiJiaCMS 6.2.1.220509(MSSQL) 闽ICP备05000814号-1
本空间由腾讯云(轻量应用服务器)提供,百度云加速提供加速防护
Copyright©2000-2022