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

SQL Server Recovery Interval 設定指南:平衡效能與復原時間

     編輯:關於SqlServer

Recovery Interval** 控制 SQL Server 將髒頁保留在記憶體的最長時間,間接決定 Checkpoint 頻率與故障復原時間 (RTO)。

運作機制

  1. 用戶修改資料 → 記憶體修改 + 記錄檔寫入 (WAL)。
  2. 髒頁暫留記憶體 (利用局部性原則減少磁碟寫入)。
  3. 若系統崩潰,SQL Server 從記錄檔重做 (Redo) 未寫入磁碟的操作。
  4. Recovery Interval** 設定上限:預估 Redo 時間不得超過此值。
  5. 當預估 Redo 時間逼近上限 → 背景執行緒觸發 Checkpoint 刷新髒頁。

預設值與調整

  • 預設 **1 分鐘** (實際約 1 分鐘內)。
  • 設定範圍:0-32767 分鐘 (0 = 自動)。
  • EXEC sp_configure 'recovery interval', 5; RECONFIGURE; 設為 5 分鐘。

權衡考量

最佳實務

  • 一般 OLTP 保持預設或 5 分鐘即可。
  • 大型資料倉儲、批次載入窗口可暫時調大 (如 30 分鐘) 減少 Checkpoint 干擾。
  • SQL Server 2012+ 建議改用資料庫層級 TARGET_RECOVERY_TIME (秒),精確控制個別資料庫 RTO:
    ALTER DATABASE YourDB SET TARGET_RECOVERY_TIME = 60 SECONDS;
  • 監控 Performance Monitor → SQL Server:Buffer Manager → Checkpoint pages/sec 觀察 Checkpoint 活動。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved
設定值優點缺點
較大 (如 10-30 分鐘)髒頁留存久 → 磁碟寫入少 → 正常負載效能佳崩潰後復原久 (RTO 長);記憶體壓力大時可能突發大量寫入
較小 (如 1 分鐘)復原快 (RTO 短)Checkpoint 頻繁 → 背景寫入 IO 佔用高 → 可能影響尖峰效能