存儲引擎之必知必會 -- 恢復間隔(分鐘)Recovery Interval

恢復間隔(分鐘)Recovery Interval

 


    SQL Server 與“恢復間隔”配置相關運作是檢查點(checkpoint)事件發生的頻率。檢查點最主要的工作是將數據庫緩存中,標示爲Dirty的數據與日誌文件分頁寫入到硬盤,藉此將 SQL Server 重新啓動時的恢復工作,如“回滾”或“重做”的工作量減至最少。


    SQL Server 會自動產生檢查點事件,它在後臺有一條線程負責產生與執行檢查點事件。檢查點事件發生的間隔是以日誌文件中的數據記錄數目爲基礎,而非時間間隔。自動產生檢查點事件之間的時間間隔可能有很大的差異。若只有很少的修改發生於數據庫中,自動檢查點之間的時間間隔將會很長。若有許多數據被修改,自動檢查點就會經常發生。    

自動檢查點之間的間隔是以“恢復間隔”配置算出的。此選項指定了 SQL Server 在系統重啓啓動的過程中,用來恢復數據庫的最大時間。 SQL Server 將估計它在恢復作業的“恢復間隔”中可處理多少日誌文件數據記錄。自動檢查點之間的間隔也取決於數據庫是否使用簡單恢復模式。


若數據庫使用的是完整或大量記錄恢復模式,每次日誌文件資料到達 SQL Server 估計可在“恢復間隔”選項指定之時間內處理的數目時,就會自動產生檢查點事件。若數據庫使用的是簡單恢復模式,每次當日志文件資料記錄的數目到達下列兩個數值的較小者時,也會自動產生檢查點:    
    * 日誌文件填滿70%時。    
    * 日誌文件數據記錄的數目到達 SQL Server 估計可在“恢復間隔”選項指定之時間內處理的數目時。


若數據庫使用的是簡單恢復模式,自動檢查點將清除事務日誌中已經完成的事務;更新到數據庫的舊記錄。若數據庫使用的是“完全”或“大量記錄恢復”模式,日誌文件的舊記錄將不會被自動檢查點所清空,而必須等到記錄備份完成。


除了 SQL Server 自動發生檢查點事件外,也可以下列方式手動地爲每個數據庫觸發檢查點:    
    * 執行 T-SQL 的 CHECKPOINT 表達式。目前連接所在的數據庫將配置檢查點。    
    * 在使用 ALTER DATABASE 來變更數據庫選項時。    
    * 當 SQL Server 執行實例由於下列原因停止時:    
執行 SHUTDOWN 表達式。


使用 SQL Server Service Control Manager,來停止執行數據庫引擎執行實例的服務。


“恢復間隔”選項可用來配置 SQL Server 恢復數據庫時, 每個數據庫所需的最大分鐘數。每次啓動 SQL Server 執行實例時,它會恢復每個數據庫,恢復未認可的事務,並回滾執行重做已認可但 SQL Server 執行實例停止時,其變更尚未寫入磁盤的事務。


每個數據庫的檢查點頻率須視所做數據修改的數量而定。若數據庫的用途偏向查詢,將不會有太多的檢查點。而事務類型的數據庫則可能會有頻繁的檢查。若覺得檢查太頻繁而導致太多的硬盤 I/O 動作有損性能,可以嘗試將“恢復間隔”選項配置的分鐘數加大。默認“恢復間隔”選項的配置值爲0,代表 SQL Server 重新啓動時,恢復工作不超過一分鐘,這可能導致數據庫幾乎每分鐘都要發生一次以上的檢查點事件。


最後若要使用 sp_configure 系統存儲過程來變更“恢復間隔(recovery interval)”的配置,它屬於高級選項。所以要將“show advanced options”選項設成1,才能看到該選項並完成變更。

 

參考MSDN:  
http://msdn.microsoft.com/zh-cn/library/ms188748.aspx    
http://msdn.microsoft.com/zh-cn/library/ms189573.aspx    
http://msdn.microsoft.com/zh-cn/library/ms191154.aspx

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章