Sql-Server

如何處理對日誌傳送影響最小的大表?

  • January 1, 2021

在需要清除或刪除的日誌傳送數據庫中有兩個半大型相關表(284,6876,609 行 - 156,785,176 KB 和 4,2628,162 行 - 2,212,464 KB)。如何處理這兩個表,同時盡量減少對日誌傳送的影響?

如果您DROP使用表,它將導致生成最少的日誌,因為它不會立即強制在已用空間上進行垃圾收集,它只是基本上只是刪除了引用。您同樣可以完成相同的結果TRUNCATE(儘管我認為在大型表上可能會有更多的成本DROP,但我必須對此進行研究並相應地更新我的答案)。

是一篇非常好的文章,詳細說明了為什麼操作TRUNCATEDROP操作都非常快速並生成最少的日誌,這是由於 SQL Server 的一個稱為deferred drop的特性。

無論哪種方式,請避免DELETE否則會生成大量日誌,這些日誌需要在目標數據庫中發送和重新應用。

這個StackOverflow 問題有多個答案,其中包含有關從大表中有效刪除數據的良好資訊(有些可能與您的問題沒有具體關係,但對將來的參考或其他有類似問題的使用者很有用)。

引用自:https://dba.stackexchange.com/questions/282402