MySQL千万级大表优化,看这一篇就忘不掉了( 六 )


Drop 操作是默认提交的 , 而且是不可逆的 , 在数据库操作中都是跑路的代名词 , MySQL 层面目前没有相应的 Drop 操作恢复功能 , 除非通过备份来恢复 , 但是我们可以考虑将 Drop 操作转换为一种可逆的 DDL 操作 。
MySQL 中默认每个表有一个对应的 ibd 文件 , 其实可以把 Drop 操作转换为一个 rename 操作 , 即把文件从 testdb 迁移到 testdb_arch 下面 。
从权限上来说 , testdb_arch 是业务不可见的 , rename 操作可以平滑的实现这个删除功能 , 如果在一定时间后确认可以清理 , 则数据清理对于已有的业务流程是不可见的 , 如下图所示:

MySQL千万级大表优化,看这一篇就忘不掉了

文章插图
 
此外 , 还有两个额外建议 , 一个是对于大表变更 , 尽可能考虑低峰时段的在线变更 , 比如使用 pt-osc 工具或者是维护时段的变更 , 就不再赘述了 。
最后总结一下 , 其实就是一句话:千万级大表的优化是根据业务场景 , 以成本为代价进行优化的 , 绝对不是孤立的一个层面的优化 。

【MySQL千万级大表优化,看这一篇就忘不掉了】


推荐阅读