簡體   English   中英

為什么不通過收縮來減小數據庫日志文件的大小?

[英]Why not reduce the database log file size with shrink?

我使用 SQL 服務器數據庫。 為了減少數據庫日志文件,我將數據庫的恢復模式設置為簡單,然后收縮數據庫,但日志文件沒有效果。

什么是問題?

不要縮小整個數據庫。 它太不精確了。 始終以單個文件為目標。 即,使用 DBCC SHRINKFILE。

日志文件不收縮的原因是最后一個虛擬日志文件正在使用中。 ldf 文件分為 Virtual Log Files (VLF),ldf 文件只能從文件末尾收縮,去除未使用的 VLF。 顯然您在文件末尾使用了 VLF,否則文件會縮小。

您要做的是清空日志(如果在簡單恢復中,則使用 CHECKPOINT 命令,如果在完全恢復中,則執行日志備份),然后執行 DBCC SHRINKFILE 命令。 您可能必須多次重復這些步驟,直到最后一個所需的 VLF 進入未使用狀態並且可以刪除。

這是我寫的一篇文章,其中包含更多細節。 是另一個關於為什么通常收縮文件是個壞主意的原因。

事務日志用於存儲增量值,而事務用於在執行數據修改(INSERT、UPDATE、DELETE...)之前保存先前的值,以防這些修改被取消。 不同的事務在此文件中按順序生成許多行,並且不同的用戶事務是交錯的。

嘗試減小事務日志的大小通常不是一個好主意,並且可能會失敗,尤其是在以下情況下:

  • 很久以前開始有一個仍然活動的事務(不是由 COMMIT 或 ROLLBACK 終止)
  • 日志大小已經最小化
  • 日志中裝載了大量事務...

一般來說,減少事務日志的大小是只應在特殊情況下進行的操作,例如在其大小變得非常巨大的情況下。 事務日志的大小約為數據庫總大小的 10% 到 20% 被認為是正常的。

事實上,事務文件的大小大幅減少和過低的事實將不可避免地迫使它增長,這種增長是對性能有害的操作......

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM