log_reuse_Wait_desc 總是返回 LOG_BACKUP 甚至在日誌備份之後
我們使用的是 SQL Server 2012 標準版 (SP4)- 11.0.700.0(x64) (Build 14393)(HYpervisor)。
數據文件大小 = 171 GB 日誌文件大小 = 106 GB
當我查詢
sys.databases
時log_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 和事務日誌管理。
- 忙碌/意外的 DBA 管理 VLF 指南David Levy
- 如何清除 SQL Server 事務日誌?通過亞倫伯特蘭
- Aaron 在他的答案底部添加了另外 4 個連結,所有這些連結都非常有用並且與您的問題相關。
- 事務日誌 VLF – 太多還是太少?通過金伯利特里普