大量記錄復原模式下的備份
這個主題是有關如何在一般使用完整復原模式的 SQL Server 資料庫上最佳化大量作業。
大量記錄復原模式是具有特殊用途的復原模式,只應該間歇性使用,以改善特定大規模大量作業 (例如大量匯入大筆資料) 的效能。關於完整復原模式之備份作業的說明,大部分也適用於大量記錄復原模式。本主題只探討大量記錄復原模式獨有的注意事項。
[!附註]
如需有關在大量記錄復原模式下執行哪些作業會進行最低記錄的詳細資訊,請參閱<可以進行最低限度記錄的作業>。
我們建議您盡量少用大量記錄復原模式。最好是在即將進行一組大量作業之前才切換到大量記錄復原模式,並在執行作業之後立刻切換回到完整復原模式。如需詳細資訊,請參閱<從完整或大量記錄復原模式進行切換的考量>。
大量記錄復原模式的運作方式
與完整復原模式完整記錄所有交易的方式不同,大量記錄復原模式是以盡量從簡的方式記錄大量作業 (雖然還是會完整記錄其他交易)。大量記錄復原模式是要保護資料不受媒體錯誤影響,並且對大量作業而言,提供最佳的效能與使用最少的記錄空間。
然而,因為大量記錄作業會避免按每筆交易逐一重新擷取變更,所以會增加大量複製作業的資料遺失風險。如果記錄備份包含任何大量記錄作業,您將無法還原到該記錄備份內的時間點,而只能還原整個記錄備份。
在大量記錄復原模式下,如果記錄備份涵蓋任何大量作業,記錄備份就會同時包含大量作業所變更的記錄及資料頁面。為了擷取大量記錄作業的結果,這麼做是有必要的。併入的資料範圍可能產生相當龐大的記錄備份。此外,備份記錄時,還必須存取包含大量記錄交易的資料檔。如果無法存取任何受影響的資料庫檔案,即無法備份交易記錄,而且該記錄中的所有認可作業都會遺失。
為了追蹤資料頁面,記錄備份作業依賴於大量變更點陣圖頁面,在點陣圖頁面中每個範圍各佔一位元。針對自最後一個記錄備份後由大量記錄作業所更新的每個範圍,位元在點陣圖中是設定為 1。資料範圍會複製到後面接有記錄資料的記錄檔。下圖顯示如何建構記錄備份。
重要事項 |
---|
在完整或大量記錄復原模式下,除非有其他因素將記錄保持為使用中狀態,否則在第一個完整備份之前,自動檢查點都會截斷交易記錄的未使用部分。在第一個完整備份之後,必須備份交易記錄,才會有截斷動作。如需有關延遲截斷之因素的詳細資訊,請參閱<可能會延遲記錄截斷的因素>。 |
大量記錄復原模式下的備份限制
在大量記錄復原模式下,存在下列備份限制:
如果在備份記錄之前,已將包含大量記錄變更的檔案群組設為唯讀,則只要檔案群組保持為唯讀,所有後續記錄備份都會包含大量記錄作業所變更的範圍。這樣的記錄備份比在完整復原模式下進行的備份還要大,而且需要更長時間才能完成。
若要避免這種情況,請在檔案群組設為唯讀之前,先將資料庫切換到完整復原模式,再備份記錄。然後將檔案群組設為唯讀。
如果在上一次記錄備份之後執行過大量作業,則大量變更會存在於資料庫中。在這種情況下,當執行記錄備份時,所有檔案都必須處於線上或是無用的狀態。這是因為備份內含大量記錄作業的記錄時,需要存取包含大量記錄交易的資料檔。
如需有關還原限制的詳細資訊,請參閱<在大量記錄復原模式下還原>。
在大量記錄交易之後將資料庫設定為唯讀
在大量記錄復原模式之下,當資料庫包含大量記錄變更時,記錄備份可正常運作。不過,如果讀取/寫入資料庫在大量記錄作業之後變更為唯讀資料庫,則後續的記錄備份可能會擷取超過所需的資料。這是因為無法更新資料檔來追蹤大量記錄作業所變更的資料範圍。所有之後的記錄備份都包含相同的資訊。
最佳作法 在資料庫變更為唯讀之前,先切換到完整復原模式,再進行記錄備份。然後使資料庫變成唯讀。實際上,進行唯讀資料庫的記錄備份毫無意義。反之,在資料庫變成唯讀之後,請建立完整的資料庫備份或一組完整的檔案備份。如需有關如何切換復原模式的詳細資訊,請參閱<從完整或大量記錄復原模式進行切換的考量>。
[!附註]
如需有關如何備份唯讀資料庫的詳細資訊,請參閱<備份唯讀資料庫>。