全部产品

释放MySQL实例的表空间

KB: 41720

 · 

更新时间:2021-03-01 09:58

概述

本文主要介绍如何释放MySQL实例的表空间。

详细信息

阿里云提醒您:

  • 如果您对实例或数据有修改、变更等风险操作,务必注意实例的容灾、容错能力,确保数据安全。
  • 如果您对实例(包括但不限于ECS、RDS)等进行配置与数据修改,建议提前创建快照或开启RDS日志备份等功能。
  • 如果您在阿里云平台授权或者提交过登录账号、密码等安全信息,建议您及时修改。

MySQL可以通过optimize table语句释放表空间,重组表数据和索引的物理页,减少所占空间和优化读写性能。如果使用delete语句删除数据库,表空间不会直接回收,您可以用optimize table语句释放表空间。

说明

  • 如果您没有进行大量删除表数据的操作,使用optimize table语句也无法降低表空间的使用率。
  • 操作将会锁表,建议在业务低峰期操作。
  • 仅Innodb和MyISAM引擎支持optimize table语句。

通过命令行操作

  1. 连接MySQL数据库,详情请参见连接MySQL数据库
  2. 执行以下SQL语句,释放表空间。
    optimize table [$Database1].[Table1],[$Database2].[Table2]
    说明:[$Database1]与[$Database2]为数据库名,[Table1]与[Table2]为表名。

通过DMS操作

  1. 登录MySQL数据库,详情请参见DMS登录MySQL数据库
  2. 在左侧选择目标实例的实例ID,然后双击目标库,右键单击任意表名,然后选择批量操作表
  3. 勾选需要释放空间的表名,然后依次选择表维护>优化表
  4. 在弹出的对话框中确认变更信息正确,然后单击确认即可。

更多信息

如果您不是因为进行大量删除表的操作导致表空间使用率增大,可以参见以下文档进行处理:

适用于

  • 云数据库RDS MySQL版