您好,登錄后才能下訂單哦!
這期內容當中小編將會給大家帶來有關SQL SERVER 2016 新功能SVT是怎么進行數據清理,文章內容豐富且以專業的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。
SQL SERVER 很有意思2016 推出一個歷史版本控制的功能,這個功能的含義在于幫助數據表在操作中根據時間來進行曾經操作的記錄,實際上等同于
先不吐槽這個功能在設計的初期有沒有毛病,但我們的的確確是遇到了,并發高,同時有回滾的時候,造成時間線出現問題,倒是任務無法執行的問題。雖然是少量的,但這個功能其實也有不嚴謹的地方。
具體這個功能怎么開啟,使用,這里就不說了,這里要說的是數據怎么清理,因為存儲的是一個行曾經的歷史活動,所以他的數據量一般是數據表頻繁修改過的匹配,也就是N條你曾經的數據。
廢話不說先做幾個,測試我們先來領會一下這個功能,歷史版本控制表,在建立的時候,會有兩種,如果建立成另一種則會給后面的自動化數據定期清理造成一定的麻煩。所以上面給出的圖形,是兩個一個是給定名字,一個是不。
插入數據,修改數據,查看歷史版本控制表
通過上圖也就會明白,這個歷史版本控制的需求,
1必須的有主鍵,否則你怎么能知道一行變化并確認
2 必須的有時間字段,以及變化的開始時間和變化的結束時間,并且行改變的開始時間是他的sysendtime 時間,而他與他主鍵一致,時間點在sysstarttime一致的是sysstarttime 從上圖我們就可以看出。
3 在有歷史版本控制表與原表工作的時候,有一些操作是被禁止的
例如上面的操作。
下面我們的直奔主題了,怎么清理這些歷史版本的數據,其實處理起來很簡單,主要是你要在處理的時候,解除歷史版本控制表與主表之間的關聯,讓其變成一個與實體表無關的表,然后就可以任你“宰割”了
在處理完畢后,我們在將他與原表進行掛載,繼續為我們工作,但在這段期間數據表操作的數據變化不會記錄到我們的歷史版本控制表。并且歷史版本控制表,只記錄UPDATE 和 Delete 的操作。
但如果和上面說的,如果你在操作的過程中,你建立歷史版本控制表的時候,沒有給表名,則你每次進行上面的操作的時候,一開 一閉,你的SQL SERVER 會將你的歷史版本表的表名進行變化,這雖然沒有什么問題,但對你自動化的清理歷史表的數據有一定的難度,所以建議還是給一個名字,降低以后自動化處理的麻煩。或者你在
alter table XXXX set (system_versioning = on ) (history_table = 你要設定的歷史版本表名) 也可以糾正你曾經因為沒有設置表名而歷史版本表名很隨意的問題。
當然也有自己創建自己的歷史歸檔表的方式,然后掛載自己創建的歷史歸檔表,但需要注意的是,這樣建立的表在聚簇和非聚簇索引的需求,(大白話就是主鍵,和 相關事件字段與主鍵的索引)你要自己處理好.
那么自己寫一個定期處理的他的存儲過程,會是一個很方便的事情。
另這樣的表在某些操作上都會和普通的表不一樣,
例如刪除一個表,需要先解除實體和歷史版本控制表之間的關系,然后在分開刪除表。
上述就是小編為大家分享的SQL SERVER 2016 新功能SVT是怎么進行數據清理了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關知識,歡迎關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。