Sql-Server

SQL Server:日誌文件收縮

  • July 17, 2017

我們正在執行 SCCM 2012 r2 報告服務,並且由於備份設置不正確,SQL Server 日誌文件已經失控,我想在繼續之前確認一些事情。

我已經設置了我們的備份解決方案來執行數據庫的完整備份和一個增量備份,現在設置為定期截斷日誌,但根據我所讀到的,由於性能問題,縮小日誌文件是一個壞主意,但似乎這是一種合適的情況,因為我們的日誌文件大約有 220GB。

首先,我是否應該嘗試縮小日誌文件,最好的方法是什麼?僅僅是通過使用DBCC SHRINKFILE嗎?

其次,我相信我應該在縮小後對日誌文件大小設置一個合理的限制,但我不確定如何也想出這個限制。它只是在截斷備份之間佔用我滿意的大小,還是有最佳實踐。

你可能會說我對 SQL Server 不是很熟悉,所以如果我的措辭有誤,我深表歉意。提前致謝。

除了完整備份和增量/差異備份之外,您還應該以合理的頻率對事務日誌進行備份,以將日誌文件中帶有已送出條目的所有位置標記為可重用,而不是對日誌文件進行截斷。使用正確大小的日誌文件,事務日誌備份將有助於防止您的日誌文件持續增長,並且只有在備份視窗之間發生比您預期的更大的更改量時才會增長。

現在開始日誌文件縮小。縮小你的日誌文件並不一定是壞事,它只需要一些計劃才能正確地做到這一點。(確保在開始之前使用完整備份在維護視窗中執行此操作,並且盡可能在沒有任何其他使用者連接的情況下執行此操作。)您可以在其上使用 DBCC 收縮命令將其降至 1MB,但在您應該這樣做之後將日誌文件重新恢復為適合數據庫中發生的更改率的大小,加上可用空間緩衝區以處理比正常數據量更大的數據更改。同樣以特定的一致增量增長日誌文件將創建大小均勻的 VLF,這有助於提高日誌性能。例如,將其縮小到 1MB 後,您以 1GB 的增量重新增長日誌文件,直到達到 5GB 的大小。

Kimberly Tripp 有幾篇很好的文章解釋了VLF事務日誌吞吐量,可能有助於閱讀。請注意她關於將日誌文件增加 4GB 的錯誤的警告。

這是另一個來自Brent Ozar的VLF參考資料,其中包含更多細節,還參考了 Kimberly 的文章。

值得注意的是,感謝@BradC,縮小和重新增長你的日誌文件應該只需要做一次,或者只有當你的日誌文件增長導致 VLF 大小不均勻時才需要做。但是,如果您將日誌文件上的自動增長大小設置為用於最初將其從 1MB 增長回的特定大小增量,那麼即使在它自動增長之後,您也不應該看到不均勻的 VLF。

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