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