recovery interval 選項

recovery interval 選項可用來設定 Microsoft SQL Server 復原資料庫時,每個資料庫所需的最大分鐘數。每次 SQL Server 的執行個體啟動時,它會復原每一個資料庫,除了回復未認可的交易之外,並向前復原未認可但其變更在 SQL Server 執行個體停止時尚未寫入磁碟的交易。這個組態選項會對復原每個資料庫所應使用的時間設定上限。預設值為 0,指出由 SQL Server 自動組態。實務上,這表示復原時間小於一分鐘,而且使用中資料庫幾乎每分鐘有一次檢查點。

recovery interval 選項可控制 SQL Server 何時會在每個資料庫中發出檢查點。檢查點會在每個資料庫上逐一執行。在檢查點上,SQL Server 可確保所有記錄資訊與所有修改的分頁都會從記憶體排清到磁碟。這樣會限制向前復原的交易個數,以確保它們都在磁碟上,藉此而限制了復原所需的時間。不需向前復原檢查點之前的修改,因為它們已在檢查點排清到磁碟。

recovery interval 選項不會影響恢復長期執行交易所需的時間。例如,若有長期執行的交易在伺服器停用前花了兩個小時執行更新,則實際的復原作業所花的時間將比回復長期交易的 recovery interval 值長得多。

SQL Server 可預估它在回復時間間隔中可向前復原的資料修改數。一般而言,若資料庫在前次檢查點之後所做的資料修改數到達 SQL Server 預估可在復原時間間隔中向前復原的數目時,SQL Server 就會在資料庫中發出檢查點。有時候 SQL Server 會在記錄填滿 70% 時發出檢查點 (若此值小於估計數字的話)。

每個資料庫的檢查點頻率視所做資料修改的數量而定,不是以任何時間為準。主要用於唯讀作業的資料庫不會有太多檢查點。而交易資料庫則會有頻繁的檢查點。

除非您覺得檢查點太過頻繁而有損效能,否則請將 recovery interval 保持為 0 (自我設定)。如果是這樣的狀況,請試著少量遞增這個值。

recovery interval 屬於進階選項。若使用 sp_configure 系統預存程序來變更該設定,則只有在 show advanced options 設為 1 時,才可以變更 recovery interval。這個設定會立即生效 (不需重新啟動伺服器)。

若要將 recovery interval 選項設為大於 60 (分鐘) 的值,您必須執行 RECONFIGURE WITH OVERRIDE 陳述式。