交易記錄檔實體架構

更新: 2006 年 4 月 14 日

資料庫中的交易記錄會對應到一或多個實體檔。從概念上來說,記錄檔是記錄的字串。就實際上來說,記錄的順序必須有效地儲存在實作交易記錄的一組實體檔案中。

SQL Server Database Engine 會在內部將每個實體記錄檔分成數個虛擬記錄檔。虛擬記錄檔沒有固定的大小,一個實體記錄檔也沒有固定的虛擬記錄檔數目。Database Engine 在建立或擴充記錄檔時,會動態選擇虛擬記錄檔的大小。Database Engine 會盡量維持少量的虛擬檔。記錄檔擴充之後的虛擬檔大小,是現有記錄檔大小以及新檔案所增加的大小總和。系統管理員無法設定虛擬記錄檔的大小或數目。

只有當記錄檔是以較小的 sizegrowth_increment 值來定義時,虛擬記錄檔才會影響到系統效能。如果因為許多少量的增加而導致這些記錄檔變大,將會有許多虛擬記錄檔。這樣會減慢資料庫啟動的速度,也會降低記錄備份和還原作業的執行速度。建議您使用接近最後所需大小的 size 值來指派記錄檔,並使用相對較大的 growth_increment

交易記錄是循環使用的檔案。例如,假設資料庫的一個實體記錄檔分成四個虛擬記錄檔。資料庫建立時,邏輯記錄檔從實體記錄檔的最前面開始。新的記錄會加在邏輯記錄檔的最後,並朝向實體記錄檔的結尾處擴充。記錄截斷會釋出記錄出現在最小復原記錄序號 (MinLSN) 前面的所有虛擬記錄。MinLSN 是成功回復全資料庫所需之最舊記錄檔記錄的記錄序號。範例資料庫中的交易記錄看起來如下圖所示。

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

當邏輯記錄檔的結尾到達實體記錄檔的結尾時,新的記錄資料將寫回實體記錄檔的開頭處。

記錄檔記錄寫回到記錄檔的開頭

只要邏輯記錄檔的結尾永遠不碰到邏輯記錄檔的開頭,此週期就會不斷地重複。如果經常截斷舊的記錄,以便讓目前到下個檢查點之間建立的所有新記錄一定會有足夠的空間可以使用,記錄檔就永遠不會填滿。不過,如果邏輯記錄檔的結尾已到達邏輯記錄檔的開頭,會發生下列其中一種狀況:

  • 如果已啟用記錄檔的 FILEGROWTH 設定,且磁碟中擁有可用的空間,檔案將以 growth_increment 所指定的數量擴大,而新的記錄則會加入擴充部分。如需有關 FILEGROWTH 設定的詳細資訊,請參閱<ALTER DATABASE (Transact-SQL)>。
  • 如果未啟用 FILEGROWTH,或保存記錄檔的磁碟可用空間少於 growth_increment 所指定的數量,則會產生 9002 錯誤。

如果記錄檔包含多個實體記錄檔,邏輯記錄檔會從頭到尾在所有的實體記錄檔移動之後,才繞回第一個實體記錄檔的起點。

請參閱

概念

會造成延遲記錄截斷的因素
交易記錄邏輯架構
使用交易記錄備份
交易記錄簡介

其他資源

瞭解交易記錄架構

說明及資訊

取得 SQL Server 2005 協助

變更歷程記錄

版本 歷程記錄

2006 年 4 月 14 日

新增內容:
  • 新增 MinLSN 的定義。