sql - 删除表和列后 MySQL 中的可用空间?

标签 sql mysql mysqldump

我有一个大约 20GB 的数据库。我需要删除 5 个表并在其他 3 个表中删除几列。

删除 5 个表并释放大约 3 GB 并删除其他表中的列应该再释放 8GB。

我如何从 MySQL 回收这个空间。

我读过转储数据库并将其恢复为解决方案之一,但我不太确定它是如何工作的,我什至不确定这是否仅适用于删除整个数据库或部分数据库?

请建议如何解决这个问题。谢谢。

最佳答案

从评论来看,听起来您使用的 InnoDB 没有每个表选项的文件。

在这种模式下通常不可能从 innodb 表空间回收空间。您唯一的行动方案是转储整个数据库,打开每个表文件模式,然后重新加载它(使用完全干净的 mysql 实例)。对于大型数据库,这将花费很长时间; mk-parallel-dump 和恢复工具可能会快一点,但仍然需要一段时间。请务必先在非生产服务器上测试此过程。

关于sql - 删除表和列后 MySQL 中的可用空间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4338645/

相关文章:

mysql - 当产品 ID 相同时将数据复制到列

mysql - 使用 mysqldump 忽略一张表?

java - MERGE 是 SQL 2008 中的原子语句吗?

SQLite 表别名影响查询性能

sql - 使用 SQL 在 MS Access 中检查约束的常量错误

mysql - 使用asp.net在Mysql中使用SHA256对用户进行身份验证

c# - 去年迁移有效,但现在不行了

php - 以下代码的输出为 "JassonArrayFail"

mysql - 如何将单行/记录从一个 MySQL 实例复制到另一个实例?

MYSQLDUMP 失败。无法执行“SHOW TRIGGERS LIKE 错误,如(Errcode : 13) (6) and (1036)