我有一个使用InnoDB存储引擎的MySQL表;它包含大约2M数据行。当我从表中删除数据行时,它没有释放分配的磁盘空间。运行optimize table命令后,ibdata1文件的大小也没有减少。
optimize table
有什么办法可以从 MySQL 回收磁盘空间吗?
我的处境很糟糕;该应用程序在大约 50 个不同的位置运行,现在几乎所有位置都出现磁盘空间不足的问题。
我自己也遇到了同样的问题。
发生的情况是,即使删除数据库,innodb 仍然不会释放磁盘空间。我必须导出,停止mysql,手动删除文件,启动mysql,创建数据库和用户,然后导入。感谢上帝,我只有 200MB 的行,但它节省了 250GB 的 innodb 文件。
设计失败。
MySQL 不会减小 ibdata1 的大小。曾经。即使您使用优化表来释放已删除记录所使用的空间,它稍后也会重用它。
优化表
另一种方法是将服务器配置为使用 innodb_file_per_table,但这需要备份、删除数据库和恢复。积极的一面是,在 优化表格。
innodb_file_per_table
优化表格
我自己也遇到了同样的问题。
发生的情况是,即使删除数据库,innodb 仍然不会释放磁盘空间。我必须导出,停止mysql,手动删除文件,启动mysql,创建数据库和用户,然后导入。感谢上帝,我只有 200MB 的行,但它节省了 250GB 的 innodb 文件。
设计失败。
MySQL 不会减小 ibdata1 的大小。曾经。即使您使用
优化表
来释放已删除记录所使用的空间,它稍后也会重用它。另一种方法是将服务器配置为使用
innodb_file_per_table
,但这需要备份、删除数据库和恢复。积极的一面是,在优化表格
。