mysql删除记录会产生碎片吗_聊聊MySQL数据碎片产生及清理

产生:

使用MySQL,每当对表记录进行删除时,该片段空间就会被留空。长期时间下来或者当大量记录被删时,有可能留空的空间比存储表(结构、数据、索引)的空间还要大。这样一来,当MySQL扫描数据时,实际上扫描的是表的容量需求上限。也就是数据被写入的区域中处于峰值位置的部分。如果进行新的插入操 作,MySQL将尝试利用这些留空的区域,但仍然无法将其彻底占用。这种额外的破碎的存储空间在读取效率方面比正常占用的空间要低得多。

查看数据库中各个表的碎片空间情况:

select table_schema, table_name, CONCAT(TRUNCATE(data_free/1024/1024,2),'MB') data_free, engine from information_schema.tables where table_schema = '数据库名' and data_free > 0;

清理:

对此,MySQL提供了清理碎片的方法:

OPTIMIZE TABLE tab_name;

tips:

对于该方法,需要注意的是执行的时候会产生表锁,因此对于体积巨大的列表应尤其注意使用。OPTIMIZE TABLE 只对MyISAM,BDB和InnoDB表起作用,尤其是MyISAM表的作用最为明显。此外,并不是所有表都需要进行碎片整理,一般只需要对包含varchar、text、blob、float等可变长度的文本数据类型的表进行整理即可。一般根据实际情况,两周或一个月进行碎片清理即可。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值