空间碎片自动回收

数据库自治服务DAS(Database Autonomy Service)为RDS MySQL提供空间碎片自动回收功能,是空间自动优化的一种方式,开启该功能后,主实例会自动执行Optimize Table或Alter Table命令来回收表空间碎片,帮助您整理物理空间碎片。

前提条件

  • 实例为如下版本,且已成功创建14天或以上:

    • RDS MySQL 8.0 高可用版、三节点企业版或集群版

    • RDS MySQL 5.7 高可用版、三节点企业版或集群版

    • RDS MySQL 5.6 高可用版

  • 实例CPU规格不小于4核。

  • 实例物理表必须是InnoDB引擎。

  • 实例已开启DAS企业版,详情请参见DAS企业版

背景信息

产生表空间碎片的常见原因:

  • 记录被Delete,且原空间无法复用。

  • 记录被Update(通常出现在变长字段中),原空间无法复用。

  • 记录插入导致页分裂,页的填充率降低。

优化前的检查项

DAS在主实例上执行Optimize Table或Alter Table命令来回收表空间碎片。执行空间碎片自动回收操作前,为了减少对数据库性能和空间的影响,DAS会自动对数据库进行如下检查。只有在通过检测后,才会进行空间碎片自动回收

  • 如下检查项如有任何一项未通过,对应表的空间碎片自动回收操作将立即停止。

    • 实例剩余可用空间至少是需回收表的物理空间的3倍。

      说明

      例如:需回收的表Table_1,该表的物理空间为30 GB,那么数据库需要有90 GB的剩余可用空间。

    • 表上无全文索引(FULLTEXT)。

  • 如下检查项如有任何一项未通过,会等待1至5分钟再进行检查。如果整个可维护时间段内都未通过检查,DAS会在下个可维护时间段内继续进行检查,直至检查通过,然后执行空间碎片自动回收

    • 实例上没有正在执行的备份任务。

    • 没有正在执行的表结构变更操作。

    • 查看实例的CPU使用率,预估空间碎片自动回收需花费的时间,确保前一天和上周同一时间段的CPU使用率低于70%,且执行前的CPU使用率低于80%。

      说明

      例如:表的物理空间为90 GB,预计空间碎片回收需花费30分钟,并且计划12月10号凌晨3点执行,那么需确认如下信息:

      • 2020-12-9 03:00至03:30的CPU使用率需小于70%。

      • 2020-12-3 03:00至03:30的CPU使用率需小于70%。

      • 2020-12-10 03:00的CPU使用率需小于80%。

    • 需碎片回收的表上,没有执行时间超过3秒的SQL。

    • 无悬挂事务(持有锁但是超过15秒未提交的事务)。

    • 实例活跃会话数小于64。

说明

如果未通过检查,无法使用空间碎片自动回收功能,您可以手动执行Optimize Table命令回收表空间碎片,详情请参见使用“optimize table”命令释放MySQL实例的表空间

操作步骤

  1. 访问RDS实例列表,在上方选择地域,然后单击目标实例ID。

  2. 进入自治功能管理页面。

    • 在左侧导航栏中,选择自治服务 > 一键诊断 > 自治中心。在自治中心页,单击自治功能开关

    • 在左侧导航栏中,选择自治服务 > 性能趋势。在性能趋势页,单击自治功能开关

  3. 自治功能管理 > 自治功能设置页签中,打开自治功能开关,并在优化和限流页签勾选空间碎片自动回收

  4. 开启空间碎片自动回收后,设置以下参数,单击确定

    重要

    当数据库实例空间状态达到设置的阈值时,DAS将在数据库实例的可维护时间段内进行空间碎片自动回收。

    参数

    说明

    表空间大于

    触发空间碎片自动回收单个物理表的最小空间,取值范围:5 GB~100 GB,默认为10 GB。

    单表空间过大会导致回收时间长,请根据实际业务情况选择合适的数值。

    说明

    如果数据库实例上所有的表空间均小于5 GB,或者所有的表空间均大于100 GB,那么系统不会进行空间碎片回收。

    碎片率大于

    触发空间碎片自动回收单个物理表的碎片率,取值范围:10%~99%,默认为20%。

    碎片率过大会降低空间优化频率,请根据实际业务情况选择合适的数值。

    说明

    如果数据库实例上所有表的碎片率均低于10%,那么系统不会进行空间碎片回收。

    说明

    例如表空间取值为5 GB,碎片率取值为10%时,所有表空间大于等于5 GB,小于等于100 GB,且碎片率大于等于10%的表,都会触发空间碎片自动回收。

  5. (可选)配置告警模板进行告警订阅,以便及时了解数据库实例的空间碎片自动回收情况。

    系统会推荐告警模板并添加对应自治事件的告警规则,您可以依照系统提示进行配置。

    说明
    • 如果您已经为实例配置了告警模板,请依照系统提示,在告警模板添加对应自治事件的告警规则。

    • 如果您需要自行设置告警模板和告警规则,请参见配置告警模板配置告警规则

    1. 选择需要告警通知的告警联系组

      • 单击添加联系人,添加新的告警联系人。

      • 单击新增联系组,添加新的告警联系组。

      • 单击目标联系人后的修改移除,修改或删除已有联系人的信息。

      详细操作请参见管理告警联系人

    2. 确认关联资源

    3. 单击提交配置,并在弹出的对话框中确认告警配置。