Sql-Server

將行插入截斷表會增加大小?

  • March 10, 2016

今天我遇到了這個問題。每個人都知道截斷表不會減少數據庫的實際大小,在我的場景中,我在一個幾乎佔用 50 GB 的數據庫上有 5 個表,所以如果我截斷其中的所有表,然後開始跨表插入新行,它會增加大小或它仍然相同 50 GB,我想要做的是重用相同的表 - 我不需要舊數據。

如果我截斷其中的所有表,然後開始跨表插入新行,它會增加大小還是仍然是 50 GB?

這取決於開始截斷之前數據庫中有多少可用空間,以及開始插入新行的速度。

作為一種優化,大表(超過 128 個區)上的截斷使用deferred drop。在截斷事務中,與表關聯的分配單元被簡單地標記為釋放。送出後,實際的解除分配工作由系統分批單獨執行。結果,由截斷釋放的空間逐漸可供重用。

請參閱刪除和重建大型對象

如果您在一個事務中截斷所有表,然後立即開始快速將行插入到剩餘空間非常少的數據庫中,那麼數據庫很有可能會增長,至少在很短的時間內直到延遲刪除開始擷取向上。

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