开篇
又是好久没有写博客了,今天就写一个在数据归档中的小经验吧!
背景
最近一周接到一个小任务,就是对一些业务表中的冷数据做归档.
在对有归档需求的业务表分析和梳理后,发现这些业务表中有50%冷数据,归档后表大小都能从千万级别的大表缩减为百万数据的表.归档工作的收益还是非常明显的.我们搞起来!
坎坷
在一波咨询和沟通后,发现 DBA 未用过 pt-archiver 对一些关联表做归档......
在一波搜索后在官网找到了方案,使用 NOT EXISTS(~), 但这是什么?要怎么做?都没有说
官网示例
但是官网只是简单的给了给示例并没有详细介绍,如何操作,继续搜索,发现了下面的东西 其他示例1
其他示例2
睿智的你一定发现了,这些文章基本是翻译和搬运了官网的文档,并没有什么借鉴和实用意义.
到了这时,我们就需要开动大脑来想想办法了!!!
解决方案
解决方案那就是 --> 理解子表中孤立行的含义
1. 先归档主表数据(删除主表原有的冷数据)
2. 主表归档完后,子表中使用关联字段在主表查询为null的数据,就是官网所定义的{子表中的孤立行}.
3. 利用主表的数据已被清空,使用 NOT EXISTS 语句和关联字段 ,对子表做归档操作
NOT EXISTS(SELECT * FROM 主表 c WHERE 子表.key=c.key)
是不是感觉很简单,也没什么内容,的确! 但是这么简单的东西没有人写明白,写清楚,就给了我写文章的机会.
End
希望这篇归档短文能给您提供一些思路和帮助,共勉!
网友评论