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

SQL Server 交易記錄核心概念:Checkpoint、MinLSN、Redo 與 Undo

     編輯:關於SqlServer

前言

交易記錄是資料庫復原的基石。理解 Checkpoint、MinLSN、Redo/Undo 機制,能協助 DBA 規劃備份策略、排查效能問題。

核心概念解析

Checkpoint(檢查點)

將記憶體中髒頁(已修改未寫入磁碟的頁面)強制刷新至資料檔,並記錄檢查點資訊至記錄檔。包含:

  • 最早的作用中交易
  • 最早未複寫的複寫交易
  • 所有作用中交易清單
  • 資料庫復原所需最少工作資訊

觸發條件:髒頁達閾值、記錄檔達 recovery interval 設定、手動執行 CHECKPOINT、資料庫關閉等。

MinLSN(最小復原 LSN)

目前作用中交易中最舊記錄的 LSN。從 MinLSN 到記錄尾端稱為作用中記錄區,不可截斷。MinLSN 也是記錄截斷點,唯有此點之前的記錄可被備份/截斷釋放空間。

Redo(重做)與 Undo(復原)

機制觸發時機動作目的
Redo交易已 Commit,但髒頁未刷入資料檔依記錄檔重新執行已提交操作確保持久性,讓資料檔與記錄一致
Undo交易未 Commit(失敗/回滾/崩潰)反向執行操作,還原修改前值確保原子性,移除未完成交易影響

Checkpoint 加速復原原理

資料庫啟動復原時:

  1. 分析階段:從最後一個 Checkpoint 開始掃描,建立作用中交易表、髒頁表。
  2. Redo 階段:從 MinLSN 向前重做所有操作(含已 Commit 與未 Commit),確保資料檔狀態推進到崩潰時刻。
  3. Undo 階段:針對作用中交易表中的交易,從記錄尾端向後復原。

Checkpoint 越新,MinLSN 越接近記錄尾端,Redo 掃描範圍越小,復原越快。

實務啟示

  • 調整 recovery interval 平衡 Checkpoint 頻率與 I/O 壓力。
  • 長時間執行交易會推高 MinLSN,阻礙記錄截斷,導致記錄檔暴增。
  • 定期完整備份 + 記錄備份,配合 CHECKPOINT 控制復原時間目標 (RTO)。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved