![]() |
1
3
唯一的方法
减少
在不临时占用更多空间的情况下,存储的使用是删除表或截断表,即使这样,也只有在您有选择的情况下才会减少空间。
许多类型的alter table操作都会临时复制表,从而创建一个新的表空间。参照 https://dev.mysql.com/doc/refman/5.6/en/innodb-create-index-overview.html 注意每一种用“rebuilds table:yes”标记的alter table。 重建表意味着创建一个新表,将旧表中的所有数据复制到新表中,同时适应新表中列的更改,然后将新表替换为旧表,最后删除旧表。对于一个大表来说,这需要时间,并且临时需要同时存储表和新表。 基本上,任何更改行大小的更改,如添加/删除列、更改列的数据类型,甚至更改列的可空性,都会重建表。不可能快速或不临时使用更多空间就删除列。 其他一些类型的alter表,比如删除次键,释放表空间中的数据库页,而不重建表。但这些页面仍然由表空间保存,并由后续数据或索引回收。 表空间永远不会缩小。它只能在复制到新表空间时删除,或者进行碎片整理。 因此,您需要确保至少有足够的可用磁盘空间来存储最大表的第二个副本(如果二进制日志存储在同一个卷上,则加上二进制日志,但我不知道RDS是否将binlog存储在同一个卷上)。 |
![]() |
hello_programmers · Mysql从其他表输出一列 1 年前 |
![]() |
Community wiki · 这个MySQL语句出了什么问题? 1 年前 |
![]() |
Community wiki · 优化从同一表中提取的多列的查询 1 年前 |
![]() |
Popo · Sql查询:返回数据库中不可用的where条件 1 年前 |
|
Hamdan Nuramdani · 对账单中一周内不同表中的数据求和 1 年前 |
|
Kugelfisch · 用php为数据库加密数据 1 年前 |