1. 程式人生 > 其它 >MSSQL·大資料量歷史資料清理的思路

MSSQL·大資料量歷史資料清理的思路

閱文時長 | 0.6分鐘 字數統計 | 963.2字元
主要內容 | 1、引言&背景 2、Delete刪除法 3、提取回寫刪除法 4、宣告與參考資料
『MSSQL·大資料量歷史資料清理的思路』
編寫人 | SCscHero 編寫時間 | 2021/7/15 PM10:45
文章型別 | 系列 完成度 | 已完成
座右銘 每一個偉大的事業,都有一個微不足道的開始。

一、引言&背景完成度:100%

a) 應對問題

面對上億級別的資料量的刪除/遷移時,刪除時間往往非常長,是否有更高效的做法?

b) 應對場景

大資料量遷移/刪除時(如海量歷史資料刪除),需要高效的清理手段。

c) 解決原理&方法

  1. Delete刪除法:適用於刪除小資料量的資料(個人認為適用於刪除資料量在200萬以下)。
  2. 有效資料提取,回寫刪除法:(個人認為適用於刪除資料量遠大於保留資料量,比例在2:8的情況可以考慮。如總量1億的資料表,有9000萬無效資料,1000萬有效資料。)

二、Delete刪除法完成度:100%

Delete刪除語句,T-SQL基礎了。簡單帶過。

--基本語法
DELETE [DBName].[TableName] WHERE [Column]='XXXX'

三、提取回寫刪除法完成度:100%

a) 主要思路

  1. 先寫好查詢語句,將準備提取的有效資料提取到另一張表。
  2. TRUNCATE原表,在GUI介面刪除主鍵約束及自增屬性。
  3. 將有效資料插回到原表中,設定好原來的主鍵約束及自增屬性。

b) 常見Q&A

  1. 為什麼要在GUI介面刪除主鍵約束及自增屬性。
    目前由於更改自增屬性,MSSQL底層處理邏輯使用T-SQL實現較為複雜,因此使用GUI介面更改的方式。如遇到"阻止儲存要求重新建立表的更改配置"等視窗,點選傳送門
  2. 在有效資料插回到原表後,設定主鍵及自增屬性,為什麼那麼慢?
    因為MSSQL對資料表結構更改底層的處理是新建一個臨時表,設定為自增主鍵,把資料插入再插回這一系列操作,所以理論上資料量越大,速度則越慢。如遇超時問題,點選傳送門
  3. 對於自增列問題使用,設定為"允許顯式插入自增列"是否可行?
    在資料回寫的時候也嘗試過此問題,但即使開啟了允許顯式插入自增列,還是要報需要開啟...。因此最簡單的方式是關閉自增屬性。
SET IDENTITY_INSERT [tablename] ON

四、宣告與參考資料完成度:100%

原創博文,未經許可請勿轉載。

如有幫助,歡迎點贊、收藏、關注。如有問題,請評論留言!如需與博主聯絡的,直接部落格私信SCscHero即可。