什么是数据碎片?

本文介绍了MySQL中的数据碎片现象,其由大量删除操作导致数据不连续产生。数据碎片过多会降低读写速度。通过模拟创建、删除数据展示了碎片的产生过程。优化方法包括使用OPTIMIZE TABLE或ALTER TABLE命令。建议定期对包含可变长度数据类型的表进行碎片清理,以保持数据库性能。

【MySQL】- 什么是数据碎片?怎么产生的?有什么副作用?如何优化?

叨叨

今天为什么会提到MySQL的数据碎片?事情是这样的周五跟同事说了一下系统中有一张表有一些容量问题,一开始想是不是需要分库分表了。但是考虑到分库分表的迁移成本问题,以及必要性问题,咨询了DBA的相关同事,DBA询问了一些系统参数(QPS,TPS,表数据占用空间(表数据4G、索引1G、碎片22G)等),给的结果:单实例足够支撑了。

img

跟我想象的答案不是很一样啊?是哪里出了问题。

紧接着我反驳到:我们表数据目标会打到 ***W,现在查询比较慢,并且磁盘碎片还比较多。

DBA:你给我的这些参数单库就够用了呀,查询慢就优化SQL,碎片多就提工单进行碎片清理。

我:优化SQL我能理解,我只看到数据碎片,整理数据碎片我也没干过呀,有没有推荐的解决方案呀。

DBA:你直接在平台提工单就好了。给了我一个SQL,alert table table_name engine = innodb;

我:看似朴实无华的一句SQL,让我产生了很多疑惑,什么是数据碎片,有啥用,咋优化呢?

什么是数据碎片?

每当MySQL从你的列表中删除了一行内容,该段空间就会被留空。而在一段时间内的大量删除操作,会使这种留空的空间变得比存储列表内容所使用的空间更大。当MySQL对数据进行扫描时,它扫描的对象实际是列表的容量需求上限,也就是数据被写入的区域中处于峰值位置的部分。如果进行新的插入操作,MySQL将尝试利用这些留空的区域,但仍然无法将其彻底占用。

总结:简单来说就是,数据删除了之后,使得数据不连续

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值