首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >InnoDB是否释放过未使用的磁盘空间?

InnoDB是否释放过未使用的磁盘空间?
EN

Database Administration用户
提问于 2017-08-28 15:52:06
回答 1查看 6.9K关注 0票数 3

一个包含500 m行的大型MySQL关联表最近由于一个bug (现在已修复)而膨胀为1B行。磁盘使用率从130 to下降到240 to。

不幸的是,此服务器上没有任何标准补救措施的空间(OPTIMIZEALTER TABLE table ENGINE=InnoDB、转储和重建、构建为临时表&重命名和删除旧表等)。我只剩下50了。

以下是一个问题:

虽然到目前为止,我已经成功地删除了超过1亿行(1B到850米),但是磁盘的使用实际上增加了10 1B(达到250 1B)。是的,每秒钟都会添加新的记录,但是我删除的速度要比添加的快得多。

  1. InnoDB会释放这个空间吗?
  2. 为什么当我缩小行数时,表磁盘的使用率会增加呢?

当常规解决方案不合适时,还有其他建议来回收未使用的磁盘空间吗?

EN

回答 1

Database Administration用户

回答已采纳

发布于 2017-08-28 16:45:45

单个表的InnoDB表空间大小(.ibd)可以通过OPTIMIZEALTER TABLE ... ENGINE=InnoDB;减小,但是系统表空间文件ibdata1永远不能缩小。

在撤消日志中ibdata1 1‘S增长的来源。

自2013年7月以来,我一直在写这方面的文章.。我是第一次从Percona的逃出主要Innodb表空间的原因帖子中了解到这个现象。

建议#1

如果在新安装的实例中将数据转储到另一台运行mysql的服务器上,则可以设置对其的复制,然后进行故障转移并将旧的主服务器丢弃。

建议#2

如果没有其他服务器,则需要停止应用程序,mysqldump数据,删除所有do,关闭mysql,删除ibdata1,启动mysql (重新创建ibdata1,重新加载mysqldump)。看看我很老的帖子如何清除mysql InnoDB存储引擎?

票数 3
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/184502

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档