MSSQL·大資料量歷史資料清理的思路
阿新 • • 發佈:2021-07-18
閱文時長 | | 0.6分鐘 | 字數統計 | | 963.2字元 |
主要內容 | | 1、引言&背景 2、Delete刪除法 3、提取回寫刪除法 4、宣告與參考資料 | ||
『MSSQL·大資料量歷史資料清理的思路』 | |||
編寫人 | | SCscHero | 編寫時間 | | 2021/7/15 PM10:45 |
文章型別 | | 系列 | 完成度 | | 已完成 |
座右銘 | 每一個偉大的事業,都有一個微不足道的開始。 |
一、引言&背景完成度:100%
a) 應對問題
面對上億級別的資料量的刪除/遷移時,刪除時間往往非常長,是否有更高效的做法?
b) 應對場景
大資料量遷移/刪除時(如海量歷史資料刪除),需要高效的清理手段。
c) 解決原理&方法
- Delete刪除法:適用於刪除小資料量的資料(個人認為適用於刪除資料量在200萬以下)。
- 有效資料提取,回寫刪除法:(個人認為適用於刪除資料量遠大於保留資料量,比例在2:8的情況可以考慮。如總量1億的資料表,有9000萬無效資料,1000萬有效資料。)
二、Delete刪除法完成度:100%
Delete刪除語句,T-SQL基礎了。簡單帶過。
--基本語法
DELETE [DBName].[TableName] WHERE [Column]='XXXX'
三、提取回寫刪除法完成度:100%
a) 主要思路
- 先寫好查詢語句,將準備提取的有效資料提取到另一張表。
- TRUNCATE原表,在GUI介面刪除主鍵約束及自增屬性。
- 將有效資料插回到原表中,設定好原來的主鍵約束及自增屬性。
b) 常見Q&A
- 為什麼要在GUI介面刪除主鍵約束及自增屬性。
目前由於更改自增屬性,MSSQL底層處理邏輯使用T-SQL實現較為複雜,因此使用GUI介面更改的方式。如遇到"阻止儲存要求重新建立表的更改配置"等視窗,點選傳送門。 - 在有效資料插回到原表後,設定主鍵及自增屬性,為什麼那麼慢?
因為MSSQL對資料表結構更改底層的處理是新建一個臨時表,設定為自增主鍵,把資料插入再插回這一系列操作,所以理論上資料量越大,速度則越慢。如遇超時問題,點選傳送門。 - 對於自增列問題使用,設定為"允許顯式插入自增列"是否可行?
在資料回寫的時候也嘗試過此問題,但即使開啟了允許顯式插入自增列,還是要報需要開啟...。因此最簡單的方式是關閉自增屬性。
SET IDENTITY_INSERT [tablename] ON
四、宣告與參考資料完成度:100%
原創博文,未經許可請勿轉載。
如有幫助,歡迎點贊、收藏、關注。如有問題,請評論留言!如需與博主聯絡的,直接部落格私信SCscHero即可。