Sql-Server

為什麼Log File在刪除時是數據庫一夜之間的5倍?

  • March 19, 2018

僅日誌文件就接近 500 GB,而數據庫為 80 GB。這不是一個生產系統,所以我試圖刪除一個有 780,000 條記錄的表。該表有 5 個按升序排序的單獨索引,當我嘗試在聚集索引中刪除 1 條帶有 PK 的記錄時,在我取消它之前需要 20 分鐘。

我讓 ssms 在“從表中刪除”中執行,現在日誌已經爆炸到 500GB。我取消了查詢,現在數據庫正在恢復中。我不能從這個表中刪除任何東西,它不是 IO,因為我可以從其他表中刪除數百萬(幾個月前,這種增長來自這個刪除)。等待顯示了很多 CXPackets 和 PageLatch_EX 但我試圖了解是否有一個設置給我一個行版本控制成本。讀取送出的快照隔離已打開,但數據庫快照已關閉。

現在恢復將需要幾個小時,但我打算做的是刪除索引,更新統計數據並刪除約束,以便我可以嘗試 tuncate,但我看到自己又回到了這裡。我應該批量刪除 2000 個並備份日誌以清除它嗎?請記住,一次刪除花費了 20 多分鐘,並且唯一鎖定的事務是用於 pagelatch。我包括了刪除的查詢計劃,我擔心並行查詢會以某種方式對日誌文件造成它需要的更重的衝擊,任何見解都會為我節省大量時間,在此先感謝。

在此處輸入圖像描述

如果這是一次性的並且這不是生產,您可以將數據庫置於簡單恢復模式,執行您需要執行的所有刪除操作。

如果您不希望日誌文件為 500GB,請在此時收縮日誌文件。

然後將其放回之前的恢復模式。

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