Sql-Server

如何執行批量刪除和釋放可用空間?

  • March 9, 2021

下午好,

我們有一個在任何時候都不是存檔的數據庫。數據庫已經大幅增長,而我們的空間不足。因此需要進行批量刪除和釋放空間。根據我的研究,為了釋放空間,我有兩個選擇:縮小數據庫或縮小文件。收縮數據庫是一個糟糕的選擇,因為它會破壞碎片。誰能指導我如何執行批量刪除和釋放空間?此外,我們計劃在每月計劃作業中實施此流程。

根據討論,我想澄清三件事:

  1. 在不鎖定表的情況下批量刪除
  2. 回收可用空間
  3. 安排每月工作

期待專家意見。

為了擺脫很多行,有多種選擇,希望下面的簡短描述能幫助您選擇哪一個可能是“合適的”。

  1. 使用截斷表 - 這通過解除分配範圍來刪除表中的所有行 - 因此是一種快速操作
  2. 對錶進行分區,然後在不再需要時使用分區開關將最舊的分區切換出去 - 假設您的分區設計會將相似年齡的行組合到同一個分區中。
  3. 使用普通刪除但多次執行,以避免鎖升級和大規模阻塞問題,仍然會導致事務日誌增長問題 - 請參閱連結的早期答案

刪除超過 x 天的行而不鎖定表

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