使用delete
语句删除数据时,delete
语句只是将记录的位置或数据页标记为了“可复用”,但是磁盘文件的大小不会改变,即表空间不会直接回收。此时您可以通过optimize table
语句释放表空间。
前提条件
- 仅InnoDB和MyISAM引擎支持
optimize table
语句。 - 实例剩余磁盘空间需要大于等于需释放表的空间。当实例剩余磁盘空间不足时,建议先扩容磁盘空间,如何扩容请参见变更配置。
说明 执行
optimize table
语句时,表数据会复制到新建的临时表中,增加实例的磁盘使用率。
注意事项
- 如果您没有使用
delete
语句删除大量表数据,使用optimize table
语句也无法降低表空间的使用率。说明 如果实例剩余磁盘空间不足,且未进行大量删除表的操作,可以参见以下文档扩容磁盘存储空间: optimize table
语句会导致锁表,建议在业务低峰期操作。
通过命令行操作
通过DMS操作
- 登录MySQL数据库,详情请参见通过DMS登录RDS数据库。
- 在左侧选择目标实例的实例ID,然后双击目标库,右键单击任意表名,然后选择批量操作表。
- 勾选需要释放空间的表名,然后选择
。
- 在弹出的对话框中确认变更信息正确,然后单击确认即可。