历史数据清理
实践
开启实例安全协同才有改功能
- 只支持 cron 定时任务执行,如果只要 1 次,那么执行完成后关闭即可
- 执行完毕直接 optimize table
- 配置策略启用定期Optimize Table功能 1 次
- 如果想无锁变更执行,确保开启dms 实例管理开启无锁变更(阿里云 RDS 自研无锁变更)
- 推荐使用指定时长,尽量不影响业务
- 删除依据字段加索引
问题
配置 1 次 sql 执行记录中没有走,已经提交工单和任务 Id 进行核实了
- optimize Table 目前支持最低 1 次,执行一次清理,下次再执行一次才进行收缩,不过可以在工单里面再次指定一个执行时间
目前应该是无法设置为0的,至少为1,目前产品策略如此,第一次暂时不可以,谢谢
如果您有类似清除数据回收的需求,建议您使用无锁变更,谢谢
回收表碎片空间
参考
历史数据清理
回收大容量表的碎片空间时,请确保实例剩余的存储空间大小至少为目标表大小的2~3倍,并在变更过程中密切关注实例剩余空间情况。
回收大容量表的碎片空间时,可能需要临时存储数据的副本或其他,这可能会导致额外的空间需求。如果空间不足,可能会导致回收碎片空间的操作失败或者实例被锁定。
无锁变更回收碎片空间
使用无锁变更
- 登录数据管理DMS 5.0。
- 在顶部菜单栏中,选择数据库开发 > 数据变更 > 无锁变更。若您使用的是极简模式的控制台,请单击左上角的,选择全部功能 > 数据库开发 > 数据变更 > 无锁变更。
- 配置无锁结构变更工单。具体操作,请参见通过无锁变更工单实现无锁结构变更。
ALTER TABLE table_name COMMENT '修改后的表的注释';
ALTER TABLE table_name ENGINE=InnoDB;
OPTIMIZE TABLE table_name;
ALTER TABLE table_name MODIFY COLUMN field_name INT COMMENT '修改后的字段注释';
实例在开启无锁结构变更后,执行无锁结构变更工单都会自动回收表碎片空间。但为确保系统更稳定地回收碎表空间,并减少对依赖该表或与该表有关联关系的其他表的影响。建议您在工单中使用如下任意SQL来整理、回收碎片空间:
Loading...