首页  >  问答  >  正文

MySQL InnoDB 从表中删除数据行后不释放磁盘空间

我有一个使用InnoDB存储引擎的MySQL表;它包含大约2M数据行。当我从表中删除数据行时,它没有释放分配的磁盘空间。运行optimize table命令后,ibdata1文件的大小也没有减少。

有什么办法可以从 MySQL 回收磁盘空间吗?

我的处境很糟糕;该应用程序在大约 50 个不同的位置运行,现在几乎所有位置都出现磁盘空间不足的问题。

P粉148434742P粉148434742371 天前652

全部回复(2)我来回复

  • P粉183077097

    P粉1830770972023-10-15 17:09:49

    我自己也遇到了同样的问题。

    发生的情况是,即使删除数据库,innodb 仍然不会释放磁盘空间。我必须导出,停止mysql,手动删除文件,启动mysql,创建数据库和用户,然后导入。感谢上帝,我只有 200MB 的行,但它节省了 250GB 的 innodb 文件。

    设计失败。

    回复
    0
  • P粉340980243

    P粉3409802432023-10-15 16:24:36

    MySQL 不会减小 ibdata1 的大小。曾经。即使您使用优化表来释放已删除记录所使用的空间,它稍后也会重用它。

    另一种方法是将服务器配置为使用 innodb_file_per_table,但这需要备份、删除数据库和恢复。积极的一面是,在 优化表格

    回复
    0
  • 取消回复