開篇
又是好久沒有寫博客了,今天就寫一個在數據歸檔中的小經驗吧!
背景
最近一週接到一個小任務,就是對一些業務表中的冷數據做歸檔.
在對有歸檔需求的業務表分析和梳理後,發現這些業務表中有50%冷數據,歸檔後表大小都能從千萬級別的大表縮減爲百萬數據的表.歸檔工作的收益還是非常明顯的.我們搞起來!
坎坷
在一波諮詢和溝通後,發現 DBA 未用過 pt-archiver 對一些關聯表做歸檔......
在一波搜索後在官網找到了方案,使用 NOT EXISTS(~), 但這是什麼?要怎麼做?都沒有說
但是官網只是簡單的給了給示例並沒有詳細介紹,如何操作,繼續搜索,發現了下面的東西
睿智的你一定發現了,這些文章基本是翻譯和搬運了官網的文檔,並沒有什麼借鑑和實用意義.
到了這時,我們就需要開動大腦來想想辦法了!!!
解決方案
解決方案那就是 --> 理解子表中孤立行的含義
1. 先歸檔主表數據(刪除主表原有的冷數據)
2. 主表歸檔完後,子表中使用關聯字段在主表查詢爲null的數據,就是官網所定義的{子表中的孤立行}.
3. 利用主表的數據已被清空,使用 NOT EXISTS 語句和關聯字段 ,對子表做歸檔操作
NOT EXISTS(SELECT * FROM 主表 c WHERE 子表.key=c.key)
是不是感覺很簡單,也沒什麼內容,的確! 但是這麼簡單的東西沒有人寫明白,寫清楚,就給了我寫文章的機會.
End
希望這篇歸檔短文能給您提供一些思路和幫助,共勉!