SQL Server重做日誌管理機制
SQL Server把所有日誌檔案當作一個連續的檔案看待。當需要收縮資料庫時,SQL Server也是把所有的檔案當作一個檔案看待,而不是每個檔案單獨收縮。除非由於磁碟空間的問題,否則沒必要使用多個重做檔案。
SQL Server把日誌檔案又劃分為多個Virtual Log Files來管理,每個VLF的大小由SQL Server根據日誌檔案的大小及增長率來確定。一個VLF可以以下面三種狀態存在:
- active:包含活動的事務
- recoverable:活動事務之前的VLF,還未進行備份,當恢復資料庫時要用到
- reusable:在完全恢復模式下已經備份,或者在簡單模式下,未包含活動事務
哈!VLF多麼類似於Oracle日誌檔案組的日誌檔案成員。
下面幾種情況,SQL Server認為使用者沒有維護一個完整的日誌序列:
- 在完全恢復模式下,從來未進行全庫備份
- 把資料庫設定為簡單模式
- 使用命令backup log with no_log或backup log with truncate_only對日誌檔案進行了手工截斷。
在上面任何一種情況下,SQL Server都會直接重用reusable VLF。在這些情況下,因為可以重用VLF,日誌檔案一般不會自動增長。當資料庫處於完全恢復模式時,如果進行了全庫備份,而又沒有對日誌進行過備份,則日誌檔案會自動增長(當然要求之前對日誌檔案進行了自動增長配置)。
查詢一個資料庫是否處於日誌維護模式可以使用下面語句(只適用於SQL Server 2005):
select last_log_backup_lsn from sys.database_recovery_status
如果結果為null,則表示資料庫未處於日誌維護狀態。
在簡單恢復模式下,SQL Server會使recoverable VLF的數量保持在一定限度之下,從而使得需要進行例項恢復時,啟動時間維持在設定的時間之內(可以使用企業管理器設定伺服器啟動的時間)。如果recoverable VLF超過這個限制,則checkpoint程式會啟動起來,把相應dirty page寫入磁碟,並把recoverable VLF寫入日誌檔案。
SQL Server的完全恢復模式及簡單恢復模式,類似於Oracle的歸檔與非歸檔模式,但是SQL Server的日誌歸檔(即日誌備份)要手工去做,或者用作業設定為自動日誌備份,顯然Oracle歸檔模式的智慧化程度高多了。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/37724/viewspace-152537/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 重做日誌管理
- 聯機重做日誌、歸檔日誌、備用重做日誌
- redo重做日誌管理
- 2 Day DBA-管理Oracle例項-管理聯機重做日誌- 多路複用聯機重做日誌Oracle
- 2 Day DBA-管理Oracle例項-管理聯機重做日誌-練習:多路複用聯機重做日誌Oracle
- 重做日誌
- 7.管理重做日誌(筆記)筆記
- 2 Day DBA-管理Oracle例項-管理聯機重做日誌Oracle
- 查詢SQL Server 2005資料庫重做日誌的資訊SQLServer資料庫
- 2 Day DBA-管理Oracle例項-管理聯機重做日誌-切換日誌檔案Oracle
- oracle 聯機重做日誌檔案Oracle
- 2 Day DBA-管理Oracle例項-管理聯機重做日誌-練習:切換日誌檔案Oracle
- 為oracle新增重做日誌組及重做日誌成員Oracle
- Oracle的重做日誌Oracle
- 恢復重做日誌
- SQL Server 收縮日誌SQLServer
- SQL Server 錯誤日誌SQLServer
- 嘗試修改SQL Server的重做日誌檔案,使其按照修改的結果執行重做,結果失敗SQLServer
- 聯機重做日誌丟失的恢復
- 聯機重做日誌檔案的恢復
- MySQL重做日誌(redo log)MySql
- 重做日誌的恢復
- 重做日誌基礎操作
- oracle 恢復重做日誌Oracle
- dml操作重做日誌分析
- SQL Server 日誌傳送配置SQLServer
- 強制日誌切換和歸檔當前的重做日誌的命令的區別
- oracle線上調整重做日誌Oracle
- logmnr分析線上重做日誌
- 手工建立多路重做日誌組
- 重做日誌大小的設定
- Oracle重做日誌調整技巧Oracle
- SQL Server 事務日誌傳輸SQLServer
- sql server日誌不能shrink或truncateSQLServer
- SQL Server事務日誌介紹SQLServer
- 壓縮SQL SERVER日誌程式碼SQLServer
- 清除SQL Server資料庫日誌SQLServer資料庫
- SQL Server ErrorLog 錯誤日誌SQLServerError