1

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

编辑:似乎我的问题可能与巨型ibdata文件有关,但由于我没有 root 访问权限,因此我无法真正执行 如何在 MySQL 中缩小/清除 ibdata1 文件中提到的解决方案

4

1 回答 1

3

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

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

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

于 2012-06-28T10:04:41.533 回答