首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> SQL Server 資料庫 >> 關於SqlServer

SQL Server Checkpoint 機制深度解析

     編輯:關於SqlServer

什麼是 Checkpoint?

在資料庫系統中,寫入交易記錄與寫入資料檔是兩大 I/O 消耗操作。為確保效能,資料庫採用 WAL (Write-Ahead Logging) 機制:提交前必須先將記錄寫入記錄檔(循序寫),而髒頁則暫留於緩衝區,稍後批次寫入資料檔(分散寫)。

當資料庫異常關閉,緩衝區髒頁可能未寫入磁碟,啟動時需透過記錄檔進行恢復。Checkpoint 即為此恢復過程的關鍵基準點,決定恢復時需掃描並重做哪些記錄。

Checkpoint 觸發與運作

  • 由 CKPT 進程發出事件,DBWn 將髒頁寫入磁碟。
  • 同步更新資料檔與控制檔檔頭的 Checkpoint 資訊。
  • 類比 Word 自動存檔:定期將記憶體修改持久化,縮短災難恢復時間。

兩大核心作用

  1. 保證一致性:將髒資料落盤,確保記憶體與磁碟資料一致。
  2. 縮短恢復時間:減少需重做的記錄量,加快實例啟動恢復速度。

Checkpoint 分類

  • 完全檢查點:將所有髒頁寫入磁碟。
  • 增量檢查點:僅寫入上次檢查點後變更的髒頁,效能較佳。

關鍵術語:RBA、LRBA、HRBA

RBA (Redo Byte Address) 為重做記錄塊在記錄檔中的位址,由三部分組成:

  1. 記錄檔序號 (4 bytes)
  2. 記錄檔區塊編號 (4 bytes)
  3. 記錄在區塊中的起始位移 (2 bytes)
  • LRBA (Low RBA):緩衝區某髒頁首次被修改時產生的重做記錄位置。
  • HRBA (High RBA):該髒頁最近一次被修改時產生的重做記錄位置。

恢復時,系統掃描從 LRBA 到 HRBA 之間的重做記錄,將資料頁恢復至崩潰前狀態。

總結

Checkpoint 是資料庫耐久性與恢復效能的平衡機制。理解其原理有助於調整恢復間隔、規劃記錄檔大小、優化備份策略。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved