大家都知道SQL Server日志文件用來記錄事物日志,但是SQL Server數據庫引擎內部將每一物理日志文件分成多個虛擬日志文件管理。而
大家都知道SQL Server日志文件用來記錄事物日志,但是SQL Server數據庫引擎內部將每一物理日志文件分成多個虛擬日志文件管理。而且虛擬日志的多少回影響數據庫的性能。
虛擬日志文件沒有固定大小,且物理日志文件所包含的虛擬日志文件數不固定。數據庫引擎在創建或擴展日志文件時動態選擇虛擬日志文件的大小。
數據庫引擎嘗試維護少量的虛擬文件. 只有當日志文件使用較小的 size 和 growth_increment 值定義時,虛擬日志文件才會影響系統性能。如果這些日志文件由于許多微小增量而增長到很大,則它們將具有很多虛擬日志文件。這會降低數據庫啟動以及日志備份和還原操作的速度。
那是不是虛擬文件越少越好呢?也不是。
我們知道事務日志是一種回繞的文件,如果每個虛擬日志的文件大小為8GB,那么只有這8GB的文件全部變成不活動時才會被清除,這樣SQL Server一次就需要清除8GB的日志,也會影響性能。
所以需要將虛擬日志的大小維護在一個合理的水平。這里先看一下虛擬日志的增長:
日志增長值64MB = 4VLFs
Kimberly給出的建議是對于日志文件比較大的系統虛擬大小文件為512M,也就是起始日志文件大小為4GB(16個VLF),然后每次以4GB的速度增長,這樣可以提高性能。
使用DBCC Loginfo可以查看VLF的數量:
這里我創建Allentest數據庫,LDF文件大小為24MB,可以看到初始為4個VLF文件,,活動的VLF文件1(status=2)。創建一張表執行下面的語句使日志增長,可以看到已經變成2個活動的VLF:
20))
go 100000
備份LOG文件后查看VLF的狀態:
可以看到第一個VLF文件已經變為可用狀態了,但是第二個VLF文件因為沒有被寫滿所以繼續使用。
聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com