全部产品
云市场

不锁表变更-回收碎片空间

更新时间:2019-08-02 23:20:07

背景

对于MySQL数据库类型的InnoDB引擎,在频繁发生update、delete操作后容易产生碎片空间,这部分空间在不经过整理前无法被再次利用。
当碎片率达到一定阶段,出于性能优化、存储空间释放重复利用等诉求,咱们会需要进行optimize table操作。但这个操作执行时会锁表,并且随着数据量的增加,锁表的时间越长。
在业务持续发展提供服务的时候,我们希望回收空间但并不希望锁表。那么,DMS企业版-不锁表结构变更,就可轻松完成此操作。

操作步骤

  • 1)确认需要变更的目标数据库实例,已注册到了DMS企业版-实例管理中,参考:系统管理-实例管理
  • 2)确认需要变更的目标数据库实例,不锁表结构变更-开启(无锁表结构变更优先) 不锁表结构变更
  • 3)执行不锁表变更,回收表空间
    • 3.1)普通用户,在有目标库表的变更权限时,可通过【数据变更】工单提交alter table table_name comment '修改后的表的注释';
    • 3.2)DBA、管理员,还可以通过【系统管理】-【任务管理】,新建SQL任务,提交alter table table_name comment '修改后的表的注释';
  • 4)一个普通变更完成时,表空间也已经得到了重新整理,并且变更期间不锁表,业务可以完全不被影响。

注意事项

  • 1)如果短期内,表结构没有变更需求,变更语句可以是修改表的注释、也可以是字段的注释
  • 2)如果短期内,表结构有变更需求,那么通过DMS企业版对应实例开启了无锁表结构变更优先,则会在变更的同时完成空间的整理不需要额外进行变更。