我有一个大约 20GB 的数据库。我需要删除 5 个表并在其他 3 个表中删除几列。
删除 5 个表并释放大约 3 GB 并删除其他表中的列应该再释放 8GB。
我如何从 MySQL 回收这个空间。
我读过转储数据库并将其恢复为解决方案之一,但我不太确定它是如何工作的,我什至不确定这是否仅适用于删除整个数据库或部分数据库?
请建议如何解决这个问题。谢谢。
最佳答案
从评论来看,听起来您使用的 InnoDB 没有每个表选项的文件。
在这种模式下通常不可能从 innodb 表空间回收空间。您唯一的行动方案是转储整个数据库,打开每个表文件模式,然后重新加载它(使用完全干净的 mysql 实例)。对于大型数据库,这将花费很长时间; mk-parallel-dump 和恢复工具可能会快一点,但仍然需要一段时间。请务必先在非生产服务器上测试此过程。
关于sql - 删除表和列后 MySQL 中的可用空间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4338645/