扫码阅读
手机扫码阅读
delete 清空表之后,磁盘空间未发生变化?
65 2024-11-06
我们非常重视原创文章,为尊重知识产权并避免潜在的版权问题,我们在此提供文章的摘要供您初步了解。如果您想要查阅更为详尽的内容,访问作者的公众号页面获取完整文章。
文章来源:
江南一点雨
扫码关注公众号
文章摘要: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项目视频系列,鼓励读者观看视频并参与项目实践。
想要了解更多内容?
文章来源:
江南一点雨
扫码关注公众号
江南一点雨的其他文章
加入社区微信群
与行业大咖零距离交流学习
软件研发质量管理体系建设
白皮书上线