删除或更新数据库数据时,会使数据在磁盘上的存储变得不连续,产生空间碎片,这导致磁盘空间浪费和数据库性能下降。DAS支持自动回收MySQL中达到阈值(如表空间大小、碎片率)的表的空间碎片。回收在实例可维护时间段执行,且会检查实例负载,以减少对业务影响。
前提条件
-
实例已开启DAS 经济版 或 企业版 ,详情请参见 管理DAS企业版 。
-
实例类型为:
-
RDS MySQL 高可用系列、三节点企业系列或集群系列。
-
MyBase MySQL高可用版。
-
-
实例已成功创建14天或以上。
-
实例CPU规格不小于4核。
背景信息
产生表空间碎片的常见原因:
-
记录被Delete,且原空间无法复用。
-
记录被Update(通常出现在变长字段中),原空间无法复用。
-
记录插入导致页分裂,页的填充率降低。
功能限制
-
仅支持对存储引擎为InnoDB的表进行空间碎片自动回收。
说明您可以使用
SHOW TABLE STATUS
和SHOW TABLE STATUS LIKE 'table_name';
语句查看目标表的存储引擎。其中 Engine 的值为目标表的存储引擎。 -
仅支持对表空间在[5,100] GB范围内的表进行空间碎片自动回收。
说明如果表空间小于5 GB或者大于100 GB,则不会对该表进行空间碎片自动回收。
优化前的检查项
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实例的表空间 。
开启空间碎片自动回收
-
登录 DAS控制台 。
-
在左侧导航栏中,单击 实例监控 。
-
找到目标实例,单击实例ID,进入目标实例详情页。
-
在左侧导航栏中,单击 自治中心 。
-
在 自治中心 页,单击右侧 自治功能开关 。
-
在
页签中,打开自治功能开关。 -
在 优化和限流 页签,勾选 空间碎片自动回收 并配置如下参数。
重要当数据库实例空间状态达到设置的阈值时,DAS将在数据库实例的 可维护时间段 内进行空间碎片自动回收。
参数
说明
表空间
触发空间碎片自动回收单个物理表的最小空间,取值范围:5 GB~100 GB,默认为10 GB。
单表空间过大会导致回收时间长,请根据实际业务情况选择合适的数值。
说明如果数据库实例上所有的表空间均小于5 GB,或者所有的表空间均大于100 GB,那么系统不会进行空间碎片回收。
碎片率
触发空间碎片自动回收单个物理表的碎片率,取值范围:10%~99%,默认为20%。
碎片率过大会降低空间优化频率,请根据实际业务情况选择合适的数值。
说明如果数据库实例上所有表的碎片率均低于10%,那么系统不会进行空间碎片回收。
说明例如 表空间 取值为5 GB, 碎片率 取值为10%时,所有表空间大于等于5 GB,小于等于100 GB,且碎片率大于等于10%的表,都会触发空间碎片自动回收。
-
单击 确定 。
-
可选: 单击 事件订阅设置 ,设置空间碎片自动回收事件通知。详情请参见 开启事件订阅功能 。
相关文档
当数据库实例存储空间不足时:
相关API
API |
描述 |
采用异步方式,批量设置指定数据库实例空间碎片自动回收功能的配置参数。 |
|
获取指定数据库实例的空间碎片自动回收规则。 |
|
批量关闭指定数据库实例的空间碎片自动回收功能。 |