Sql-Server

SQL Server 2008 日誌文件即使在簡單恢復中也會變得超大

  • January 7, 2010

我們在 SQL Server 2008 中有一個數據庫,其Recovery model設置為Simple.

定期,我們在一張大表上執行一次大更新(要更新 1500 萬行)。為此,我們執行了一個需要 2 小時以上執行的儲存過程。當儲存過程完成執行時,日誌文件增長到 37GB,這有點奇怪,因為恢復模型很簡單,而且我們甚至沒有在儲存過程中明確開始事務(我們對數據庫進行了完整備份在更新之前為安全起見)

此外,當我們縮小日誌文件時,它會回到 1MB

是否可以阻止日誌文件增長到 37GB

謝謝

我有一個類似的問題。我需要刪除幾百萬條舊記錄。大約 30 分鐘後刪除失敗,因為日誌文件的可用空間太小。我們通過修改刪除語句來解決它,一次只刪除 50​​0,000 條記錄。這解決了問題。

將這些知識應用到您的案例中。你能執行幾個較小的更新而不是一個大的更新嗎?這可以通過在儲存過程中顯式添加“開始事務”和“送出”語句來完成。除了在儲存過程的開頭和結尾處聲明之外,您還可以在一百萬行之後發出送出並開始一個新事務。我不會在每次更新後進行送出,因為這會大大降低性能。另一種選擇是將儲存過程限制在一定數量並多次呼叫它,或者創建類似的儲存過程來處理數據的不同部分。

由於您沒有顯式使用事務邊界,因此您可能會幸運地將事務隔離級別設置為未送出的讀取。見這裡。我認為它可能會加快處理速度,但我不認為它會對事務日誌產生重大影響。請注意,您可以通過將隔離級別設置為未送出的讀取來啟用臟讀。

引用自:https://serverfault.com/questions/100187