SQL Server 採用「先改記憶體、再寫磁碟」策略,被修改但未寫入磁碟的頁面稱為「髒頁」。同步髒頁至磁碟的三大機制——Lazy Writer (惰性寫入器)、Checkpoint (檢查點)、Eager Writer (積極寫入器)——觸發時機、行為特徵與效能影響迥異。本文逐一解析並對比。
特點:背景非同步、批次處理、不影響用戶查詢回應。
建立一個「所有已提交交易的修改均已持久化至磁碟」的時間點標記,作為資料庫復原起點。約每分鐘自動觸發一次,確保啟動復原在 1 分鐘內完成。若該間隔寫入記錄 < 10 MB 則不自動觸發。
3502 可在錯誤日誌記錄檢查點起訖位置。大量資料載入操作:BCP、SELECT INTO、WRITETEXT/UPDATETEXT、BULK INSERT。
| 特性 | Lazy Writer | Checkpoint | Eager Writer |
|---|---|---|---|
| 觸發條件 | 記憶體壓力 / 定期排程 | 定期 (約 1 分鐘) / 手動 / 記錄量閾值 | 大量載入操作 (BCP, BULK INSERT 等) |
| 寫入目標 | 長期未用髒頁 (LRU 淘汰) | 所有已提交交易的髒頁 | 當前大量操作產生的新頁面 |
| 頁面標記 | 寫入後標記空閒 (可被覆蓋) | 標記乾淨 保留在緩衝池 | 寫入後標記乾淨,通常隨即被讀取 |
| 移出緩衝池 | 是 | 否 | 視後續存取而定 |
| 主要目的 | 釋放記憶體、配合 OS | 縮短復原時間、保證持久化 | 加速大量載入、防止記憶體耗盡 |
CHECKPOINT 可加速後續資料庫備份/還原。