扫码阅读
手机扫码阅读

delete 清空表之后,磁盘空间未发生变化?

65 2024-11-06

我们非常重视原创文章,为尊重知识产权并避免潜在的版权问题,我们在此提供文章的摘要供您初步了解。如果您想要查阅更为详尽的内容,访问作者的公众号页面获取完整文章。

查看原文:delete 清空表之后,磁盘空间未发生变化?
文章来源:
江南一点雨
扫码关注公众号
文章摘要

文章摘要:MySQL中的空洞问题与optimize table命令

松哥宣布了TienChin视频项目的完成,该项目基于Spring Boot和Vue3技术栈,涵盖了许多有趣的技术内容,邀请小伙伴们参与并完成一个超过90%完成率的项目。

1. 删除空洞

通过一个案例,展示了删除操作后数据表文件大小的变化。使用MySQL进行数据删除时,实际上只是标记数据为已删除,而不是真正释放空间。这导致了表中会出现大量的“删除空洞”。

2. 插入空洞

插入操作也可能造成空洞,尤其是使用随机字符串作为ID时。这是因为随机插入会引起页分裂,从而在数据页中留下空余空间。更新索引值也可以导致空洞,因为其本质上是插入和删除的结合。

3. optimize table

为了解决空洞问题,可以使用optimize table命令,该命令有助于重新整理表空间并优化文件碎片。尽管InnoDB表不直接支持optimize操作,但MySQL会将其映射为alter table操作,该操作可以重整索引并释放未使用的空间。此外,optimize操作是online DDL的,意味着在执行操作期间,不会阻塞正在进行的CRUD操作。具体流程包括使用临时文件扫描并重建B+Tree,以及将日志文件中的CRUD操作应用到临时文件以获取最新的数据表。

最后,文章再次提及了TienChin项目视频系列,鼓励读者观看视频并参与项目实践。

想要了解更多内容?

查看原文:delete 清空表之后,磁盘空间未发生变化?
文章来源:
江南一点雨
扫码关注公众号