利用 pt-archiver 归档 关联表

开篇

  又是好久没有写博客了,今天就写一个在数据归档中的小经验吧!

背景

  最近一周接到一个小任务,就是对一些业务表中的冷数据做归档.
  在对有归档需求的业务表分析和梳理后,发现这些业务表中有50%冷数据,归档后表大小都能从千万级别的大表缩减为百万数据的表.归档工作的收益还是非常明显的.我们搞起来!

坎坷

  在一波咨询和沟通后,发现 DBA 未用过 pt-archiver 对一些关联表做归档......
  在一波搜索后在官网找到了方案,使用 NOT EXISTS(~), 但这是什么?要怎么做?都没有说


官网示例

  但是官网只是简单的给了给示例并没有详细介绍,如何操作,继续搜索,发现了下面的东西
其他示例1

其他示例2

  睿智的你一定发现了,这些文章基本是翻译和搬运了官网的文档,并没有什么借鉴和实用意义.
到了这时,我们就需要开动大脑来想想办法了!!!

解决方案

  解决方案那就是 --> 理解子表中孤立行的含义

 1. 先归档主表数据(删除主表原有的冷数据) 
 2. 主表归档完后,子表中使用关联字段在主表查询为null的数据,就是官网所定义的{子表中的孤立行}.
 3. 利用主表的数据已被清空,使用 NOT EXISTS  语句和关联字段 ,对子表做归档操作
      NOT EXISTS(SELECT * FROM 主表 c WHERE 子表.key=c.key)

  是不是感觉很简单,也没什么内容,的确! 但是这么简单的东西没有人写明白,写清楚,就给了我写文章的机会.

End

  希望这篇归档短文能给您提供一些思路和帮助,共勉!