Sql-Server
如何執行批量刪除和釋放可用空間?
下午好,
我們有一個在任何時候都不是存檔的數據庫。數據庫已經大幅增長,而我們的空間不足。因此需要進行批量刪除和釋放空間。根據我的研究,為了釋放空間,我有兩個選擇:縮小數據庫或縮小文件。收縮數據庫是一個糟糕的選擇,因為它會破壞碎片。誰能指導我如何執行批量刪除和釋放空間?此外,我們計劃在每月計劃作業中實施此流程。
根據討論,我想澄清三件事:
- 在不鎖定表的情況下批量刪除
- 回收可用空間
- 安排每月工作
期待專家意見。
為了擺脫很多行,有多種選擇,希望下面的簡短描述能幫助您選擇哪一個可能是“合適的”。
- 使用截斷表 - 這通過解除分配範圍來刪除表中的所有行 - 因此是一種快速操作
- 對錶進行分區,然後在不再需要時使用分區開關將最舊的分區切換出去 - 假設您的分區設計會將相似年齡的行組合到同一個分區中。
- 使用普通刪除但多次執行,以避免鎖升級和大規模阻塞問題,仍然會導致事務日誌增長問題 - 請參閱連結的早期答案