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

SQL Server 交易記錄與檢查點機制深度解析

     編輯:關於SqlServer

檢查點做什麼?

將緩衝區中所有髒頁 (已修改未寫入磁碟) 強制刷新至資料檔,包含已認可與未認可的變更。同時將快取的記錄刷新至記錄檔。類似「鬧鐘」定時喚醒 Data Writer / Log Writer 執行寫入。

觸發檢查點的事件

  • 資料庫備份 (完整/差異/記錄)
  • 手動執行 CHECKPOINT 指令
  • 關閉資料庫
  • ALTER DATABASE 指令
  • 自動檢查點 (依 recovery interval 設定或記錄檔達 70% 滿)
  • 間接檢查點 (SQL 2012+ 新特性,可針對特定資料庫設定目標復原時間)

三大寫入進程比較

檢查點與 LSN (Log Sequence Number) 關係

  • 檢查點開始時,在記錄檔寫入 Begin Checkpoint LSN
  • 髒頁刷新完成,寫入 End Checkpoint LSN
  • 記錄 MinLSN (最小復原 LSN):標示最早仍需保留的記錄位置,供 Rollback/Undo 使用。MinLSN 必須存在於檢查點記錄中,才能保證回滾操作能找到對應的前映像。

後續文章將詳細闡述 LSN 結構、MinLSN 計算邏輯、VLF (Virtual Log Files) 管理與記錄檔截斷機制。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved
進程目的觸發條件是否釋放記憶體
Checkpoint縮短啟動復原時間,標記復原起始點時間間隔、記錄檔滿 70%、備份等否 (僅刷新髒頁副本)
Lazy Writer釋放緩衝區空間 (LRU 演算法)記憶體壓力、定期掃描是 (釋放乾淨頁)
Eager Writer支援大量插入 (BCP/SELECT INTO) 並行寫入最小記錄操作、大量載入視情況