mysql - 从失败的插入中回收磁盘空间

标签 mysql amazon-rds

我愚蠢地试图将一列添加到我没有足够的磁盘空间来复制的表中,不得不终止它并扩展我的 RDS 实例的存储容量以避免站点崩溃。我想再做一次(这次有足够的磁盘空间),但我似乎无法恢复到查询前的免费存储水平。我的查询是创建一个像巨型表一样的表,添加一列,然后将旧表的全部内容连同 null 一起插入到新表中。我尝试了 CALL mysql.rds_rotate_slow_log;CALL mysql.rds_rotate_general_log; 但从我的 AWS Cloudwatch 面板来看,我仍然比查询前的水平低了约 10GB。没有行成功插入到新表中。是否有一些“清除硬盘缓存”命令或类似的命令?由于它是 RDS,我无权访问运行它的实例,但我有主用户和 RDS CLI 访问权限。

编辑:看来我的问题可能与巨大的 ibdata 文件有关,但由于我没有根访问权限,我无法真正执行中提到的解决方案How to shrink/purge ibdata1 file in MySQL

最佳答案

解决方案是删除新表。我不认为新表中存储了任何内容,因为 select count(*) from new_table; 返回了 0,但我猜临时数据无论如何都绑定(bind)到新表中。从数据库结构的角度来看,我不确定这到底是如何工作的,但幸运的是它做了我想要的。

底线:杀死的插入仍然使用存储空间。

如果有人能解释为什么会这样,那将对 future 有所帮助。

关于mysql - 从失败的插入中回收磁盘空间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11184229/

相关文章:

php - 我的自定义 PHP stdev 函数 VS mysql 的 STDDEV_POP

mysql - Spring JDBC运行时指定查询表

amazon-web-services - 克隆生产 RDS 实例的快速方法

amazon-ec2 - 关于 AWS RDS 多可用区的两个问题

amazon-web-services - 如何在 Amazon 的 Aurora DB 中更改 character_set_server?

php - 为 AWS 测试我的 PHP/MySQL 应用程序的性能

php - MySQL 错误 1210

mysql - 如何通过一条MySQL查询查询夫妻数据?

python - 将mysql与pythonanywhere一起使用时出现错误4

postgresql - 连接到 Postgres AWS RDS 实例 - "certificate verify failed"