交易記錄截斷

若永遠不將記錄從交易記錄中刪除,交易記錄就會持續成長,直到填滿實體記錄檔可用的所有磁碟空間為止。記錄截斷會自動釋出邏輯記錄中的空間,以供交易記錄重複使用。

除了因為某個原因而造成延遲以外,記錄截斷會在下列情況下自動發生:

  • 在簡單復原模式下,發生在檢查點之後。

  • 在完整復原模式或大量記錄復原模式下,上一次備份以來發生檢查點時的記錄備份之後。如需詳細資訊,請參閱本主題稍後的「在完整或大量記錄復原模式下的記錄截斷」。

雖然記錄截斷是自動發生的,但是可能會因為各種因素而延遲。如需有關延遲記錄截斷之因素的詳細資訊,請參閱<可能會延遲記錄截斷的因素>。

重要事項重要事項

如果在記錄截斷中發生長時間的延遲,交易記錄可能會填滿。如需有關如何處理完整交易記錄的詳細資訊,請參閱<寫滿交易記錄疑難排解 (錯誤 9002)>。

如需有關記錄截斷的架構資訊,請參閱本主題稍後的「記錄截斷的運作方式」。

在完整或大量記錄復原模式下的記錄截斷

在完整復原模式或大量記錄復原模式下,記錄的非使用中部分要等到其所有記錄檔記錄都已經在記錄備份中擷取之後,才會被截斷。這是維護「記錄鏈結」 (具有未中斷記錄序號 (LSN) 的一連串記錄檔記錄) 所需的項目。假設下列條件均成立,當您備份交易記錄後,就會截斷記錄:

  • 自從上次備份記錄之後發生檢查點。在完整復原模式或大量記錄復原模式下,截斷記錄一定需要檢查點,但是只有檢查點還是不夠。在檢查點之後,記錄會維持完整,至少到下一次交易記錄備份為止。

    如需詳細資訊,請參閱<檢查點與記錄檔的使用中部份>。

  • 沒有其他因素妨礙記錄截斷。

    一般情況下,使用定期備份時,記錄空間將定期釋放以供日後使用。但是,其他因素 (例如,長時間執行的交易) 可能會暫時導致記錄無法截斷。如需詳細資訊,請參閱<可能會延遲記錄截斷的因素>。

  • BACKUP LOG 陳述式未指定 WITH COPY_ONLY。

備份交易記錄

記錄截斷的運作方式

[!附註]

截斷作業不會讓實體記錄檔變小。縮減記錄檔的實體大小需要壓縮檔案。如需有關壓縮實體記錄檔大小的詳細資訊,請參閱<壓縮交易記錄檔>。

交易記錄是循環使用的檔案。建立資料庫時,邏輯記錄檔會從實體記錄檔開頭處開始。新的記錄會加在邏輯記錄檔的尾端,並朝向實體記錄檔的尾端擴充。資料庫中的交易記錄會對應到一或多個實體檔。SQL Server Database Engine 會在內部將每個實體記錄檔分成數個虛擬記錄檔。記錄截斷會釋出邏輯記錄檔中的空間,其方式是從邏輯記錄檔的開頭刪除非使用中的虛擬記錄檔。如需有關交易記錄架構的深入資訊,請參閱<交易記錄邏輯架構>和<交易記錄檔實體架構>。

虛擬記錄檔是可重複使用的空間單位。只有僅包含非使用中記錄檔記錄的虛擬記錄檔才可以被截斷。交易記錄的使用中部分 (「使用中記錄」) 無法截斷,因為需要使用中記錄來還原資料庫。最近的檢查點會定義使用中記錄。記錄最多可以截斷至該記錄點。

[!附註]

如需虛擬記錄檔功能的詳細資訊,請參閱<交易記錄檔實體架構>。

執行檢查點時,交易記錄的非使用中部分會標示成可重複使用。之後,記錄截斷就可以釋出非使用中的部分。截斷會釋出非使用中的虛擬記錄檔以便重複使用。最後,當新記錄寫入釋出的虛擬記錄檔後,該虛擬記錄檔就會再次成為使用中。

記錄於檢查點的某項資訊是必須存在之第一筆記錄檔記錄的記錄序號 (LSN),才能成功回復整個資料庫。此 LSN 就稱為「最小復原 LSN」 (MinLSN)。記錄使用中部分的開頭就是含有 MinLSN 的虛擬記錄。截斷交易記錄後,只有此虛擬記錄檔前面的記錄檔記錄才能釋出以便重複使用。

下圖將顯示截斷前後的交易記錄。第一張圖是顯示從未進行截斷的交易記錄。目前,邏輯記錄正使用四個虛擬記錄檔。虛擬記錄是從第一個虛擬記錄檔的前面開始,並於虛擬記錄 4 結束。MinLSN 記錄位於虛擬記錄 3 中。虛擬記錄 1 和虛擬記錄 2 僅包含非使用中的記錄檔記錄。這些記錄都可以截斷。虛擬記錄 5 仍未使用而且不屬於目前邏輯記錄的一部分。

具有四個虛擬記錄檔的交易記錄檔

第二張圖是顯示記錄截斷之後的內容。虛擬記錄 1 和虛擬記錄 2 已經釋出以便重複使用。邏輯記錄檔現在會從虛擬記錄檔 3 的開頭開始。虛擬記錄檔 5 仍未使用,而且不屬於目前邏輯記錄檔的一部分。

分為四個虛擬記錄檔的記錄檔