想要收缩表空间,结果适得其反
  cGIFZsDlOY2g 2023年11月02日 67 0
  • 问题
假设现在有人碰到了一个“想要收缩表空间,结果适得其反”的情况,看上去是这样的:
一个表 t 文件大小为 1TB;
对这个表执行 alter table t engine=InnoDB;
发现执行完成后,空间不仅没变小,还稍微大了一点儿,比如变成了 1.01TB。
你觉得可能是什么原因呢 ?
  • 分析
可能这个表本身就已经没有空洞的了,比如说刚刚做过一次重建表操作。
在 DDL 期间,如果刚好有外部的 DML 在执行,这期间可能会引入一些新的空洞。
而且mysql有个更深刻的机制,就是在重建表的时候,InnoDB 不会把整张表占满,而是每个页留了1/16给后续的更新用。也就是说,其实重建表之后不是“最”紧凑的。
  • 参考答案
假如是这么一个过程:
将表 t 重建一次;
插入一部分数据,但是插入的这些数据,用掉了一部分的预留空间;
这种情况下,再重建一次表 t,就可能会出现问题中的现象。
【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

cGIFZsDlOY2g