Sql-Server

log_reuse_Wait_desc 總是返回 LOG_BACKUP 甚至在日誌備份之後

  • September 18, 2019

我們使用的是 SQL Server 2012 標準版 (SP4)- 11.0.700.0(x64) (Build 14393)(HYpervisor)。

數據文件大小 = 171 GB 日誌文件大小 = 106 GB

當我查詢sys.databaseslog_reuse_Wait_desc它總是LOG_BACKUP- 即使在日誌備份之後!

當我執行時,DBCC SQLPERF(logspace)我看到“使用的日誌空間 %”小於 1%。 DBCC loginfo返回 773 這是高。

僅供參考-此數據庫不涉及日誌傳送/複製/鏡像。此數據庫的恢復模式是完整的,並且每 30 分鐘進行一次日誌備份。我知道日誌備份正在發生,因為我從msdb.dbo.backupset.

直到上週,該數據庫在日誌文件上設置了 % autogrowth。我將其作為配置更改的一部分進行了更改。

我如何找到為什麼總是log_reuse_desc返回LOG_BACKUP

我想探索一些減少磁碟上日誌文件大小的選項。(我知道截斷和縮小日誌文件是一件壞事,但此時我想知道我的可用選項)。有人可以建議一種優雅的方式來做到這一點。

當我查詢 sys.databases 以查看 log_reuse_Wait_desc 時,它始終是 LOG_BACKUP——即使是在日誌備份之後!我如何找到 log_reuse_desc 總是返回 LOG_BACKUP 的原因。

Paul Randal 很好地解釋了這一點:

想像一個數據庫,其中幾乎沒有插入/更新/刪除/DDL 活動,因此在您的正常日誌備份之間只生成了少量日誌記錄,並且它們都在同一個 VLF 中。下一次日誌備份執行,備份那幾條日誌記錄,但是無法清除目前的VLF,所以無法清除log_reuse_wait_desc。一旦數據庫中有足夠的更改填滿目前 VLF 並啟動下一個 VLF,下一個日誌備份應該能夠清除以前的 VLF,然後 log_reuse_wait_desc 將恢復為 NOTHING。直到下一次日誌備份發生並且無法清除目前 VLF,在這種情況下它將再次回到 LOG_BACKUP。

所以 LOG_BACKUP 真正的意思是“要麼你需要進行日誌備份,要麼備份的日誌記錄都在目前的 VLF 中,因此無法清除。”

全文:為什麼 log_reuse_wait_desc 做日誌備份後說 LOG_BACKUP?

我想探索一些減少磁碟上日誌文件大小的選項。

在縮小日誌文件之前,了解 VLF 數量過多或過少的情況也很重要。我建議你閱讀以下文章。這些將使您更好地了解 VLF 和事務日誌管理。

  1. 忙碌/意外的 DBA 管理 VLF 指南David Levy
  2. 如何清除 SQL Server 事務日誌?通過亞倫伯特蘭
  3. Aaron 在他的答案底部添加了另外 4 個連結,所有這些連結都非常有用並且與您的問題相關。
  4. 事務日誌 VLF – 太多還是太少?通過金伯利特里普

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